在ActionScript 3使用的MovieClip(根)

问题描述 投票:1回答:2

即时在框架3 ..我对艺名scoreTxt ..在框架3 I加入TryClass文本字段..

 var Try:TryClass = new TryClass();

TryClass有..这是工作的罚款updateScore的功能,如果在框架3 IM所以我的代码

     public function updateScore(amount:int):void
     {
           score += amount;
           if(score < 0) score = 0;

           realNumber = score;

           setInterval(updateDisplayedScore, 10);

     }

     public function updateDisplayedScore():void
           {
               displayedNumber += Math.round((realNumber-displayedNumber)/5);
               if (realNumber - displayedNumber < 5 && realNumber - displayedNumber > -5)
               {
                     displayedNumber = realNumber;
               }
               addZeros();
           }

     public function addZeros():void
           {
               var str:String = displayedNumber.toString();
               MovieClip(root).scoreNa.text = str;
           }

但随后例如如果..用户死亡或他达到要求的分数..即时通讯想使用此代码去某一帧..

MovieClip(this.root).gotoAndStop("Main"); this code is on the class..

其到达框架“主”,但其指向误差这个 - >

MovieClip(root).scoreTxt.text

该“主”框架是在框架4 ..这是我没有被添加到了TryClass ..我应该添加到我的所有帧TryClass?又是怎样的呢?

很抱歉的问题..我不知道还如何完美代码类..和访问时间表和其他外部类。请不要使用ActionScript的更深层次的语言..对初学者仅..

这里是完整的错误信息,当我去到帧“主”

TypeError: Error #1009: Cannot access a property or method of a null object reference.
          atTumba/addZeros()[C:\Documents and Settings\Chrissan\Desktop\Game and Docs\Game\Tumba.as:686]
          atTumba/updateDisplayedScore()[C:\Documents and Settings\Chrissan\Desktop\Game and Docs\Game\Tumba.as:680]
          atFunction/http://adobe.com/AS3/2006/builtin::apply()
          atSetIntervalTimer/onTimer()
          atflash.utils::Timer/_timerDispatch()
          atflash.utils::Timer/tick()

这是Tumba.as的线686 - MovieClip(root).scoreNa.text = str;

public function updateDisplayedScore():void
               {
                   displayedNumber += Math.round((realNumber-displayedNumber)/5);
                   if (realNumber - displayedNumber < 5 && realNumber - displayedNumber > -5)
                   {
                         displayedNumber = realNumber;
                   }
                   addZeros(); -->> this is the line 680 of Tumba.as
               }

有关的setInterval先生..其工作正常,因为我进口在flash.utils。*我添加的类..但对“主” FRAM ..its上框架3工作正常。它不是..

actionscript-3 flash adobe movieclip flash-cs5.5
2个回答
0
投票

尝试使用(root as MovieClip)代替MovieClip(root)


0
投票

我的猜测是,“根”是不确定的,因为我猜TryClass不是从生活在现有的层次结构的MovieClip或其他的DisplayObject继承。

为了解决这个问题,我想一个参数添加到类的构造函数。然后,我把它送您可以访问一个影片剪辑。举例来说,如果你是从一个影片剪辑实例内部类,只是把它的“本”为那部电影。

public class TryClass {
   ...
   static var myroot:MovieClip = null;
   ...
   public function TryClass(someclip:MovieClip=null) {
      ...
      if (this.myroot == null && someclip != null && someclip.root != undefined) {
        this.myroot = someclip.root;
      }
      ...
   }
   ...
}

然后从影片剪辑中:

var something = new TryClass(this);

无论如何,这是我使用的为我做一类的技术。对于我的,我如果类检测根已经没有它加载后增加一个外部的影片剪辑实例。就我而言,从我装的包装类称为通用负载吧。如果我把它放在已经特定电影有一个自定义加载条,那么就不会做任何事情,但对于任何我没有一个在的是,它会添加它。

© www.soinside.com 2019 - 2024. All rights reserved.