2013-10-15 71 views
0

我有这个类的问题,它会引发1034错误:类型强制失败:无法将绿色$转换为flash.display.DisplayObject。AS3错误#1034:类型强制失败:

我相信它是链接到BG变量。 有点帮助将大大apreciated 感谢

public var bg1:Green; 
    public var bg2:Red;  
    public var bg3:Blue;   
    public var bg:MovieClip; 
    public var bgElements_arr : Array; 
    public var bg_arr : Array; 

    public function Level1(target:Stage) 
    { 

     bg1 = new Green; 
     bg2 = new Red; 
     bg3 = new Blue; 
     bgElements_arr = new Array(Green, Red, Blue); 
     bg_arr = new Array(); 

     for(var bg_i:int =0; bg_i <5; bg_i++) 
     { 

      bg=bgElements_arr[Math.floor(Math.random() * bgElements_arr.length)]; 

      bg_arr.push(bg); 
      target.addChild(bg); 

     } 
+0

什么是绿色的类型? – Pan

+0

它应该是一个影片剪辑。因为它是一个链接到库中的影片剪辑 – Yaniv

+0

因此尝试target.addChild(bg作为DisplayObject) – Pan

回答

1

你想在舞台上类构造函数没有实例增加。添加'新'关键字,它将工作:

for(var bg_i:int =0; bg_i <5; bg_i++) 
     { 

      bg= new bgElements_arr[Math.floor(Math.random() * bgElements_arr.length)]; 

      bg_arr.push(bg); 
      target.addChild(bg); 

     } 
+0

谢谢您。在开始我用数组声明替换:“bgElements_arr = new Array(bg1,bg2,bg3);”并且它有部分工作,一些元素没有出现。你的解决方案修复了一切我很好奇那里有什么魔法...... – Yaniv

+0

Class和Instance之间有区别。您可以使用创建另一个Class对象的关键字'new'来创建实例。您正在使用库中的类,而不是实例。 – turbosqel

相关问题