2

所以我对actionscript 3相当陌生,为了练习,我制作了一个脚本,当单击数组中的三个方块之一时,它将把它移动到一个随机点。没有任何编译器错误,但输出显示:

ReferenceError: Error #1069: Property x not found on String and there is no default value.
    at trying_Scene1_fla::MainTimeline/move_sq()

单击其中一个方块时。继承人的脚本:

import flash.events.MouseEvent;
import flash.events.Event;


var squares:Array=[ square_1, square_2, square_3]
var low:Number=1;
var high:Number=100;
var chosen:Number=Math.floor(Math.random()* (1+ high - low))+low;

for(var i=0; i<squares.length; i++){
    squares[i].addEventListener(MouseEvent.CLICK, move_sq);
}

function move_sq(e:MouseEvent):void{
    var square_num = e.target.name;
    if (chosen>50) {
        square_num.x -= Math.random()* 10
        square_num.y -= Math.random()* 10
    }
    else {
    square_num.x += Math.random()* 10
    square_num.y += Math.random()* 10
    }
}
enter code here

我希望这只是一个小错误或我不知道的事情,如果你能帮忙,请做。谢谢!

4

2 回答 2

1

您可以通过在鼠标侦听器功能中执行此操作来修复错误:

var square_num = e.target;

但你可以这样做,如果你知道类型:

var square_num:MovieClip = MovieClip(e.target);
于 2013-03-08T19:27:38.290 回答
0

这是因为“square_num”是一个字符串:

var square_num = e.target.name;

e.target 的 name 属性是一个字符串,它没有 x 和 y 属性。我想你可能想使用:

var square_num:MovieClip = (MovieClip) (e.target.name);

(我猜“square_1”、“square_2”和“square_3”是电影剪辑)

于 2013-03-07T02:37:55.400 回答