2017-06-15 109 views
0

我这是在为“Adobe Flash Professional CS5中”开发一个FLA文件。它使用动作脚本2.0迁移动作脚本2.0代码到行动脚本3.0

现在我必须迁移该FLA文件的“Adobe动画CC 2017年”。当在IDE中加载fla文件并发布时,我遇到了下面的错误。

符号“AAAA”,层“的定义”,第1帧,第20行,第8栏1061:通过与静态类型类的引用调用可能未定义的方法的registerClass。

下面

是,您可以根据您的AS2代码的一些假设的代码片段

// The default value for Severity parameter must be negative. 
function AAAAClass() { 
    this.setID(this.mID); 
    this.setStatus(this.mStatus); 
} 

AAAAClass.prototype = new MovieClip(); 

AAAAClass.prototype.setID = function(variable) { 
    this.ID.text = variable; 
}; 

AAAAClass.prototype.setStatus = function(variable) { 
    this.Status.text = variable; 
    this.Status._visible = false; 
}; 

Object.registerClass("AAAA", AAAAClass); // Compiler shows error at this statement 
+1

as2.0不支持正确的类,因此'Object.registerClass',而是创建一个[as3.0类](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3 /Class.html)命名为'AAAA',并在上面的代码中定义'AAAAClass'的方法/属性(例如'setID()','setStatus()') –

+0

感谢您的帮助! –

+0

有什么工具可以帮助将AS2.0转换为3.0?我在哪里可以找到AS 3.0的有用文档? –

回答

1

// The default value for Severity parameter must be negative. 
function AAAAClass() {          //this is the "constructor" 
    this.setID(this.mID);      
    this.setStatus(this.mStatus); 
} 

AAAAClass.prototype = new MovieClip();      //this means the class extends MovieClip (probably a Movie Clip Exported for Actionscript in the .fla file's Library) 

AAAAClass.prototype.setID = function(variable) {    
    this.ID.text = variable;        //from this line we can deduce the ID isn't an int (as intuituion might point to), but a String and the clip must contain a Dynamic TextField named ID 
}; 

AAAAClass.prototype.setStatus = function(variable) { 
    this.Status.text = variable;       //from this line we can deduce the Statusi is also a String and the clip must contain a Dynamic TextField named Status 
    this.Status._visible = false; 
}; 

Object.registerClass("AAAA", AAAAClass); // Compiler shows error at this statement 

这可以推断出一个像这样3.0类:

package { 

    import flash.display.MovieClip; 
    import flash.text.TextField; 

    public class AAAA extends MovieClip { 

     private var mID:String = "default ID"; 
     private var mStatus:String = "default status"; 

     //private var ID:TextField; 
     //private var Status:TextField; 

     public function AAAA(){ 
      this.setID(this.mID); 
      this.setStatus(this.mStatus); 

      //ID = new TextField(); 
      //Status = new TextField(); 
     } 

     public function setID(variable:String):void{ 
      this.mID = variable; 
      this.ID.text = this.mID; 
     }; 

     public function setStatus(variable:String):void{ 
      this.mStatus = variable; 
      this.Status.text = this.mStatus; 
      this.Status.visible = false; 
     }; 

     override public function toString():String{ 
      return "[AAAA mID=" + mID + " mStatus=" + mStatus + " ]"; 
     } 

    } 

} 

注意到注释掉了TextFields?我无法猜测结构,但我的猜测是,在您为2.0的项目有在挂有两个TextFields的AAAAClass库的MovieClip:IDStatus

有很多从AS2到AS3 AS3和迁移方面覆盖。 我推荐阅读Trevor McCauley's Getting Started with ActionScript 3.0 in Adobe Flash CS3详尽文章和​​Dan Carr's Migrating from ActionScript 2 to ActionScript 3: Key concepts and changes文章。

如果你是新来的AS3可能实行的概念在最小的新的Flash项目的文章这样解释这一切都简单,易于消化,然后再返回到你的项目和应用你学到的东西。