2014-02-14 21 views
0

因此,基本上,我想要做的是替换Player MovieClip中已存在的动画片段剪辑的内容,并且它是动画的,因此它具有穿过播放器动画剪辑的剑形MovieClip的多个实例。AS3 - 如何更改所有相同Movieclips运行时的内容?

我可以在ActionScript中以某种方式编辑剑动画片段的内容,以便所有剑动画片段更新并更改?

我想要实现的只是改变角色动画的武器,不需要我等待每一帧,removeChild()前一个武器和addChild()武器的每一个实例的新的武器。

+0

你可以请示出一些代码吗?我的意思是你到目前为止所尝试过的? –

+0

我现在拥有的是 'var weaponName:String =“swordBasic1”; var weaponNameClass:Class = getDefinitionByName(weaponName)as Class; VAR WeaponName =新weaponNameClass;' '如果(PlayerCharMc.currentFrame = 5!){ \t \t \t PlayerCharMc.WeaponMc.addChild(WeaponName); \t \t} else if(PlayerCharMc。currentFrame == 5){ \t \t \t PlayerCharMc.LPunch.WeaponMc.addChild(WeaponName); \t \t}' 这比上年影片剪辑基本上粘贴新的一个,我还没有添加removeChilds,但我明白,我不会和一个灵活的系统跑远。我想改变的是动态库中的动画片段。 – lagxbag

回答

0

我不知道我得到它,但也许你需要一个武器事件类 包WeaponEvents { import flash.events.Event;

[Event(name="sword1", type="event.sword1")] 
[Event(name="sword2", type="event.sword2")] 


public class SwordEvent extends Event 
{ 

    public static const SWORD_1 : String = "sword1"; 
    public static const SWORD_2 : String = "sword2"; 

    public var arg:*; 

    public function SwordEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, ... a:*) { 
     super(type, bubbles, cancelable); 
     arg = a; 

    } 

//覆盖克隆 覆盖公共函数克隆():事件{ 返回新比如LoadEvent(类型,气泡,或取消,ARG); } } }

只需将事件添加到用户发现武器时。

+0

PS只要您强制键入事件并在不再需要时删除它们,您就不必担心泛型事件的性能问题。 – Papergrave

+0

感谢您的回答。尽管如此,我还没有得到它的工作,但那是因为我忽略了与类和包相关的任何事情。我将所有内容都放在一个文件中,并且我认为跨多个文件的代码适用于更大的项目。这真的很愚蠢,因为我不知道任何关于包,类和导入这些类的内容吗? – lagxbag

0

我和你在一条类似的船上。除了我有30-50个身体部位掩饰之外,所以我真的不能采用暴力的方式。

如果它只是你想替换的剑,我假设在动画中它是在它自己的层上?然后我发现一个“便宜的方式”是:

  1. 复制粘贴该层(和只有该层)中的所有帧到另一个动画片段即Sword1Swing中。
  2. 从您的MC动画中删除该图层(以及该图层)。
  3. 在又一电影层,把Sword1Swing上框架1,Sword2Swing上框架2等
  4. MC.gotoAndStop("SwordSwing"); SwordMC.gotoAndStop("Sword1Swing");
  5. 只要你保持.X和.Y的SwordMC与MC同步,动画应该总是排队。
  6. 手经常会越过剑的顶端,在这种情况下...您也可以复制手。或整个手臂。或者,您可以在库中定制剑形符号的基本图形,以便与手指之间的空白空间完全匹配(复制并粘贴手形图形以移除不需要的部分,然后删除手形图形,然后您将拥有完美的形状) 。

这是我知道的贫民窟方式,我非常需要一个实际的高效交换。但这可能会帮助您快速完成项目。

相关问题