/**
		 * @private
		 *
		 * @return An exact duplicate of the current object.
		 */
		override public Event clone()
		{
			FrameEvent evt = new FrameEvent(this.EventType);
			evt.AnimationState = AnimationState;
			evt.Bone = Bone;
			evt.FrameLabel = FrameLabel;
			return evt;
		}
示例#2
0
		/** @private */
		public void arriveAtFrame(Frame frame, TimelineState timelineState, AnimationState animationState, bool isCross)
		{
			if(frame!=null)
			{
				int mixingType = animationState.GetMixingTransform(Name);
				if(animationState.DisplayControl && (mixingType == 2 || mixingType == -1))
				{
					if(
						DisplayController==null || DisplayController == animationState.Name
						)
					{
						TransformFrame tansformFrame = frame as TransformFrame;
						if(_slot!=null)
						{
							int displayIndex = tansformFrame.DisplayIndex;
							if(displayIndex >= 0)
							{
								if(!float.IsNaN(tansformFrame.ZOrder) && tansformFrame.ZOrder != _slot._tweenZorder)
								{
									_slot._tweenZorder = tansformFrame.ZOrder;
									this._armature._slotsZOrderChanged = true;
								}
							}
							_slot.changeDisplay(displayIndex);
							_slot.updateVisible(tansformFrame.Visible);
						}
					}
				}
				
				if(frame.Evt!=null && this._armature.HasEventListener(FrameEvent.BONE_FRAME_EVENT))
				{
					FrameEvent frameEvent = new FrameEvent(FrameEvent.BONE_FRAME_EVENT);
					frameEvent.Bone = this;
					frameEvent.AnimationState = animationState;
					frameEvent.FrameLabel = frame.Evt;
					this._armature._eventList.Add(frameEvent);
				}
				
				if(frame.Sound!=null && _soundManager.HasEventListener(SoundEvent.SOUND))
				{
					SoundEvent soundEvent = new SoundEvent(SoundEvent.SOUND);
					soundEvent.Armature = this._armature;
					soundEvent.AnimationState = animationState;
					soundEvent.Sound = frame.Sound;
					_soundManager.DispatchEvent(soundEvent);
				}
				
				if(frame.Action!=null)
				{
					foreach(DBObject child in _children)
					{
						if(child is Slot)
						{
							Armature childArmature = (child as Slot).ChildArmature;
							if(childArmature!=null)
							{
								childArmature.Animation.GotoAndPlay(frame.Action);
							}
						}
					}
				}
			}
			else
			{
				if(_slot!=null)
				{
					_slot.changeDisplay(-1);
				}
			}
		}