【问题标题】:AS3 Error #1034: Type Coercion failed:AS3 错误 #1034:类型强制失败:
【发布时间】:2013-10-15 14:25:39
【问题描述】:

我对这个类有问题,它会抛出 1034 错误:类型强制失败:无法将 Green$ 转换为 flash.display.DisplayObject。

我相信它与 bg 变量有关。 一点帮助将不胜感激 谢谢

    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);

        }

【问题讨论】:

  • 格林的类型是什么?
  • 它应该是一个影片剪辑。因为它是库中影片剪辑的链接
  • 所以试试 target.addChild(bg as DisplayObject)
  • 我认为我在 bgElements_arr 声明中犯了一个错误,我声明了类型而不是变量......我会挖掘这个

标签: actionscript-3 flash types runtime-error


【解决方案1】:

您试图在舞台上添加 Class 构造函数,而不是实例。添加“新”关键字,它将起作用:

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);

        }

【讨论】:

  • 谢谢。一开始我将数组声明替换为:"bgElements_arr = new Array(bg1, bg2, bg3);"它部分工作,一些元素随机没有出现。您的解决方案解决了所有问题。我很好奇那里有什么魔法......
  • Class 和 Instance 有区别。您可以使用创建另一个 Class 对象的关键字“new”创建实例。您使用的是来自 library 的 Classes,而不是 Instances。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 2012-09-04
  • 2015-08-10
相关资源
最近更新 更多