私は画面上に作成したボックスを削除しようとしています。 としてエクスポートされたボックスがあります。ボックスと船はプレーヤーとしてエクスポートされますが、両方のムービークリップです。as3のマウスクリックでボックスを削除する
1120:未定義のプロパティ_boxのアクセス
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends MovieClip {
//playermovevar
private var _player:MovieClip;
private var _playerSpeed:Number=5;
private var _destinationX:int;
private var _destinationY:int;
//boxaddvar
private var boxAmount:Number=0;
private var boxLimit:Number=20;
private var _root:Object;
public function Main() {
createPlayer();
//playermovlisten
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseHandlerdown);
//boxaddlisten
addEventListener(Event.ENTER_FRAME, eFrame);
_box.addEventListener(MouseEvent.CLICK, boxclick);
}
//playermoving
private function createPlayer():void {
_destinationX=stage.stageWidth/2;
_destinationY=stage.stageHeight/2;
_player = new Player();
_player.x=stage.stageWidth/2;
_player.y=stage.stageHeight/2;
stage.addChild(_player);
}
private function enterFrameHandler(event:Event):void {
_player.x += (_destinationX - _player.x)/_playerSpeed;
_player.y += (_destinationY - _player.y)/_playerSpeed;
}
private function mouseHandlerdown(event:MouseEvent):void {
_destinationX=event.stageX;
_destinationY=event.stageY;
addEventListener(MouseEvent.MOUSE_UP, mouseHandlerup);
rotatePlayer();
}
private function mouseHandlerup(event:MouseEvent):void {
}
private function rotatePlayer():void {
var radians:Number=Math.atan2(_destinationY-_player.y,_destinationX-_player.x);
var degrees:Number = radians/(Math.PI/180) + 90;
_player.rotation=degrees;
}
//boxadding
private function eFrame(event:Event):void {
if (boxAmount<=boxLimit) {
boxAmount++;
var _box:Box=new Box ;
_box.y=Math.random()*stage.stageHeight;
_box.x=Math.random()*stage.stageWidth;
addChild(_box);
} else if (boxAmount >= boxLimit) {
removeEventListener(Event.ENTER_FRAME, eFrame);
} else {
addEventListener(Event.ENTER_FRAME, eFrame);
}
}
function boxclick(event:MouseEvent):void {
removeChild(_box);
}
}
それは私にこのエラーを与える:これはコードです。 _box.addEventListener(MouseEvent.CLICK、boxclick);
1120:未定義のプロパティ_boxのアクセス。 removeChild(_box);
誰もが何を間違って知っていますか?あなたがパッケージの}
を閉じるのを忘れて
おかげ
はうまくいくが、唯一の2つのもの(1)別のボックスをクリックする前に別の場所をクリックしなければならない。 (2)(私はこれを言うのを忘れてしまったと思う)私がステージ上の他の場所に再び現れる必要があるボックスをクリックすると。おかげで助けてくれました。 – thor625
その場合、箱を取り除かずに移動してください。関数boxclick(evt:MouseEvent):void { \t \t \t //removeChild(ボックスの現在のターゲット)。 \t \t \t \t \t \t _box = evt.currentTarget; \t \t \t \t \t \t _box.y = Math.random()* stage.stageHeight; _box.x = Math.random()* stage.stageWidth; } – crooksy88
私はそれが動作すると思いますが、私はむしろそれを取り除き、それを動かす代わりに別の場所に追加します – thor625