1

複数のレベルとホーム ボタンを備えたドラッグ アンド ドロップ Actionscript ゲームを作成しています。特定のターゲット サイトにドラッグ アンド ドロップするレベルがありますが、ホーム ボタンをクリックすると、ドラッグされたアイテムが画面に残ります。removeChild を追加しましたが、1 つのレベルでしか機能せず、別のレベルをクリックすると機能しなくなります。

私が持っているコードは次のとおりです。 ページ1

stop()


    home.addEventListener(MouseEvent.CLICK, click_home);    
    btn1.addEventListener(MouseEvent.CLICK, click_btn1);
    btn2.addEventListener(MouseEvent.CLICK, click_btn2);
    btn3.addEventListener(MouseEvent.CLICK, click_btn3);



function click_home(event:MouseEvent):void
{
    gotoAndStop(1);
    removeChild (Qld);
    removeChild (Nsw);
    removeChild (Sa);
    removeChild (Wa);
    removeChild (Nt);
    removeChild (Vic);
    removeChild (Tas); 
    removeChild (Butter1);
    removeChild (Butter2);
    removeChild (Butter3);
    removeChild (Butter4);
    removeChild (Butter5);
    removeChild (Dog);
    removeChild (Cat);
    removeChild (Squeek);
}

function click_btn1(event:MouseEvent):void
{
    gotoAndStop(5);
}
function click_btn2(event:MouseEvent):void
{
    gotoAndStop(10);
}
function click_btn3(event:MouseEvent):void
{
    gotoAndStop(15);

}

ページ2

    var objectoriginalX:Number;
var objectoriginalY:Number;

buttonMode = true;
Qld.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Qld.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Nsw.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Nsw.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Sa.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Sa.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Nt.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Nt.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Wa.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Wa.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Vic.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Vic.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Tas.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Tas.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Tas.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Tas.addEventListener(MouseEvent.MOUSE_UP, dropObject);


function pickupObject(event:MouseEvent):void {
    event.target.startDrag(true);
    event.target.parent.addChild(event.target);
    objectoriginalX = event.target.x;
    objectoriginalY = event.target.y;
}

function dropObject(event:MouseEvent):void {
    event.target.stopDrag();
    var matchingTargetName:String = "target" + event.target.name;
    var matchingTarget:DisplayObject = getChildByName(matchingTargetName);
    if (event.target.dropTarget != null && event.target.dropTarget.parent == matchingTarget){
        event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
        event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
        event.target.buttonMode = false;
        event.target.x = matchingTarget.x;
        event.target.y = matchingTarget.y;
    } else {
        event.target.x = objectoriginalX;
        event.target.y = objectoriginalY;
}
}

3ページ

    var objoriginalX:Number;
var objoriginalY:Number;

buttonMode = true;
Butter1.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Butter1.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Butter2.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Butter2.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Butter3.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Butter3.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Butter4.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Butter4.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Butter5.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Butter5.addEventListener(MouseEvent.MOUSE_UP, dropObject);

function pickupObj(event:MouseEvent):void {
    event.target.startDrag(true);
    event.target.parent.addChild(event.target);
    objoriginalX = event.target.x;
    objoriginalY = event.target.y;
}

function dropObj(event:MouseEvent):void {
    event.target.stopDrag();
    var matchingTargetName:String = "target" + event.target.name;
    var matchingTarget:DisplayObject = getChildByName(matchingTargetName);
    if (event.target.dropTarget != null && event.target.dropTarget.parent == matchingTarget){
        event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
        event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
        event.target.buttonMode = false;
        event.target.x = matchingTarget.x;
        event.target.y = matchingTarget.y;
    } else {
        event.target.x = objoriginalX;
        event.target.y = objoriginalY;
}
}

ページ4

import flash.events.Event;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
stop();

targetSqueek.addEventListener(MouseEvent.ROLL_OVER,playSqueek);
targetCat.addEventListener(MouseEvent.ROLL_OVER, playCat);
targetDog.addEventListener(MouseEvent.ROLL_OVER, playDog);


function playSqueek(event:Event){
    SoundMixer.stopAll();
    var mySound:SqueekSound=new SqueekSound();
    var myChannel:SoundChannel=mySound.play();
}


function playCat(event:Event){
    SoundMixer.stopAll();
    var mySound2:CatSound=new CatSound();
    var myChannel:SoundChannel=mySound2.play();
}

function playDog(event:Event){
    SoundMixer.stopAll();
    var mySound1:DogSound=new DogSound();
    var myChannel:SoundChannel=mySound1.play();
}

var obj_1originalX:Number;
var obj_1originalY:Number;

buttonMode = true;
Dog.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Dog.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Cat.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Cat.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Squeek.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Squeek.addEventListener(MouseEvent.MOUSE_UP, dropObject);

function pickupObj_1(event:MouseEvent):void {
    event.target.startDrag(true);
    event.target.parent.addChild(event.target);
    obj_1originalX = event.target.x;
    obj_1originalY = event.target.y;
}

function dropObj_1(event:MouseEvent):void {
    event.target.stopDrag();
    var matchingTargetName:String = "target" + event.target.name;
    var matchingTarget:DisplayObject = getChildByName(matchingTargetName);
    if (event.target.dropTarget != null && event.target.dropTarget.parent == matchingTarget){
        event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
        event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
        event.target.buttonMode = false;
        event.target.x = matchingTarget.x;
        event.target.y = matchingTarget.y;
    } else {
        event.target.x = obj_1originalX;
        event.target.y = obj_1originalY;
}
}

これは、ホームをクリックすると表示されるエラーです TypeError: Error #2007: Parameter child must be non-null. flash.display::DisplayObjectContainer/removeChild() で Main/click_home() で

4

1 に答える 1