Actionscript 3:使用for循环从数组访问movieclips

时间:2014-02-23 15:45:19

标签: actionscript-3 class for-loop instance

我在访问我作为孩子添加的动画片段时遇到了一些麻烦。根据我的阅读,解决这个问题的方法是将每个新的动画片段添加到一个数组中,然后在我想要更改所有动画片段的内容时循环遍历此数组。

在我的情况下,我想缩放它们。

这就是我尝试实现此功能的方法:

package 
{
import flash.display.MovieClip;
import flash.utils.Dictionary;
import flash.events.MouseEvent;

import Airport;

public class Main extends Sprite
{
    public var tile:MovieClip

    public var bg_image:Sprite;
    public var airport:Airport;

    public static var airportDict:Dictionary = new Dictionary();
    public static var collectedAirportArray:Array = new Array();


    public function Main()
    {
        addEventListener(Event.ADDED_TO_STAGE, init);
    }

    public function init(e:Event):void
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);

                    // airportDict is being filled up here.. but that's not really relevant for my problem

        bg_image = new Image();
        addChild(bg_image);

        bg_image.addEventListener(MouseEvent.CLICK, testfunction);

        for (var k:Object in airportDict)
        {
            var airport:Airport = new Airport(k,airportDict[k]["x"], airportDict[k]["y"]);
            collectedAirportArray.push(collectedAirportArray);
            bg_image.addChild(airport);
        }
    }

    private function testfunction(evt:MouseEvent):void
    {
        for each (tile in collectedAirportArray)
        {
            tile.scaleY = 2 * tile.scaleY;
        }
    }

}

}

点击TypeError: Error #1034: Type Coercion failed: cannot convert []@30977eb1 to flash.display.MovieClip. at Main/testfunction()

时,这会向我显示错误消息bg_image

2 个答案:

答案 0 :(得分:0)

AirPort班正在扩展什么?如果它扩展MovieClip,那么尝试类似转换,如下所示:

private function testfunction(evt:MouseEvent):void
{
    for each (tile in collectedAirportArray)
    {
       var myTile:MovieClip = MovieClip(tile); 
       myTile.scaleY = 2 * myTile.scaleY;
    }
}

答案 1 :(得分:0)

您在制作阵列的位置有错误。你有collectedAirportArray.push(collectedAirportArray); - 你基本上是在推动一个阵列。他们说,很好的蛇。你应该在那里推动新建的机场:

collectedAirportArray.push(airport);

如果您的airportDisplayObject,那么您的代码应该有效。