我对此非常陌生,并希望这是显而易见的事情。
当我运行下面的代码时,Array newHole和newArray都在跟踪上返回1。最初代码只使用newHole数组构建,但我创建了newArray以期进行故障排除。它没有帮助。 bulletHole的类不包含额外的代码,因此我没有发布。
谢谢。
import flash.display.*;
import flash.events.*;
import flash.ui.Mouse;
Mouse.hide();
var myReticle:MovieClip;
var holeArray:Array = new Array();
var randomHole:Number = randomNumber(1, 5);
var newHole:bulletHole = new bulletHole();
var newArray:Array = new Array();
stage.addEventListener(MouseEvent.MOUSE_MOVE, followReticle);
stage.addEventListener(MouseEvent.CLICK, myFire);
stage.addEventListener(MouseEvent.CLICK, checkCount);
function followReticle(event:MouseEvent):void
{
myReticle.x = mouseX;
myReticle.y = mouseY;
}
function myFire(int):void
{
stage.addChild(newHole);
newHole.x = myReticle.x;
newHole.y = myReticle.y;
//holeArray.push(newHole);
newHole.gotoAndStop(randomHole);
//trace(holeArray.length);
}
function checkCount(int):void
{
newArray.push("A");
trace(newArray.length);
}
function randomNumber(low:Number=0, high:Number=1):Number
{
return Math.floor(Math.random() * (1+high-low)) + low;
}
答案 0 :(得分:1)
最有可能的问题是您发布的代码一次又一次地运行。换句话说,你有一个循环时间轴,最终会返回到你所显示的代码所在的框架。
每当达到该帧时,您都有以下内容:
var holeArray:Array = new Array();
它创建了一个新数组,取代了该变量中的内容。
要解决此问题,您需要:
以下是后一个选项的示例:
//just define the array, don't create it
var holeArray:Array;
//if the array is null, create it (it will only be null the first time this code is run
if(!holeArray){
holeArray = new Array();
}
答案 1 :(得分:0)
此行不正确:
function myFire(int):void {
因为该函数是从鼠标事件侦听器触发的,所以它应该是:
function myFire(e:MouseEvent):void {
您正在做的是将未定义的int传递给函数。希望这会有所帮助。
编辑:您应该删除clickCount事件监听器和函数,因为它们不需要。
另请注意,您应将此行移至myFire函数的顶部,否则您将继续替换此MovieClip而不是再次创建它:
var newHole:bulletHole = new bulletHole();