2

だから私はactionscript 3にかなり慣れていないので、練習するために、配列内の3つの正方形の1つがクリックされるとランダムな場所に移動するスクリプトを作成しました。コンパイラ エラーはありませんが、出力には次のように表示されます。

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

正方形の 1 つがクリックされたとき。スクリプトは次のとおりです。

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 に答える