我在访问我作为孩子添加的动画片段时遇到了一些麻烦。根据我的阅读,解决这个问题的方法是将每个新的动画片段添加到一个数组中,然后在我想要更改所有动画片段的内容时循环遍历此数组。
在我的情况下,我想缩放它们。
这就是我尝试实现此功能的方法:
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
答案 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);
如果您的airport
是DisplayObject
,那么您的代码应该有效。