public virtual void GotoFrame(int frame){
if (_currentFrame != frame) {
_currentFrame = frame;
FrameObject frameObj = _define.frames[_currentFrame];
removeUnusedPlaceobjs(frameObj);
// frameObj.reset();
// for(int i=0; i<frameObj.placeObjectCount; i++){
// PlaceObject placeObj = frameObj.nextPlaceObject();
for(int i=0; i<frameObj.placeObjects.Length; i++){
PlaceObject placeObj = frameObj.placeObjects[i];
DisplayObject displayObj = _depth_displays[placeObj.depth];
//no exist display, new one
if(displayObj == null){
displayObj = getDisplayCache(placeObj.depth, placeObj.characterId);
if(displayObj == null){
displayObj = createDisplayObject(placeObj.characterId);
_view.addChild(displayObj.view);
}
_depth_displays[placeObj.depth] = displayObj;
}
//exist display obj, but the tag indicats to new one
// else if (placeObj.hasCharacter){
// if(displayObj.characterId != placeObj.characterId){
// DisplayObject newDisplayObj = getDisplayCache(placeObj.depth, placeObj.characterId);
// if(newDisplayObj == null){
// newDisplayObj = createDisplayObject(placeObj.characterId);
// _view.addChild(newDisplayObj.view);
// }
// recycleDisplayCache(placeObj.depth, displayObj);
// displayObj = newDisplayObj;
// _depth_displays[placeObj.depth] = displayObj;
// }
// } else if(displayObj.characterId != placeObj.characterId){
// CCDebug.Log("abc");
// }
else if (displayObj.characterId != placeObj.characterId){
DisplayObject newDisplayObj = getDisplayCache(placeObj.depth, placeObj.characterId);
if(newDisplayObj == null){
newDisplayObj = createDisplayObject(placeObj.characterId);
_view.addChild(newDisplayObj.view);
}
recycleDisplayCache(placeObj.depth, displayObj);
displayObj = newDisplayObj;
_depth_displays[placeObj.depth] = displayObj;
}
displayObj.applyPlaceObject(placeObj);
}
_isBoundsDirty = true;
}
}
DisplayObject createDisplayObject(int characterId){