【问题标题】:The movie clips still appear on the next scene what is wrong with my code?影片剪辑仍然出现在下一个场景中 我的代码有什么问题?
【发布时间】:2018-01-10 02:01:33
【问题描述】:

每次你将一个不正确的盒子拖放到 target_mc 上时,盒子就会出现在下一个场景中并且不会消失,这是为什么?非常感谢您的帮助。代码是 actionscript 3,应用程序是在 adobe animate 中制作的。除非重新启动,否则该框在应用中的任何时候都不会消失。

stop();



import flash.events.TouchEvent;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
import flash.display.MovieClip;

/* Touch and Drag Event
Allows the object to be moved by holding and dragging the object.
*/
var objectoriginalXX:Number;
var objectoriginalYY:Number;



var countApple:int = 0;


Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

var apples:Array = [apple1_mc, apple2_mc, apple3_mc, apple4_mc, apple5_mc];

for each(var appleMC:MovieClip in apples)
{
appleMC.buttonMode = true;
appleMC.addEventListener(TouchEvent.TOUCH_BEGIN, pickobject1);
appleMC.addEventListener(TouchEvent.TOUCH_END, dropobject1);

appleMC.startX = appleMC.x;
appleMC.startY = appleMC.y;

}
var fl_DragBounds1:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);


function pickobject1(event:TouchEvent):void
{
    event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds1);
    event.target.parent.addChild(event.target);
    objectoriginalXX = event.target.x; 
    objectoriginalYY = event.target.y;


}

function dropobject1(event:TouchEvent):void
{
    if(event.target.hitTestObject(target_mc)){
        event.target.buttonMode = false;
        event.target.x = target_mc.x;
        event.target.y = target_mc.y;
        event.target.visible = false;
        wellsound.play();
        countApple ++;


    }

    if(countApple == 5)
    {

    gotoAndPlay(4072);


    }


else{
    event.target.x = event.target.startX;
    event.target.y = event.target.startY;
    event.target.buttonMode = true;
}


}

nexthomeBtn12.addEventListener(TouchEvent.TOUCH_BEGIN,onTouchBeginhomescene12);


function onTouchBeginhomescene12 (e:TouchEvent):void{

gotoAndPlay(0);
SoundMixer.stopAll();


}




var peachs:Array = [peach1_mc, peach2_mc, peach3_mc, peach4_mc, peach5_mc, peach6_mc];
for each(var peachMC:MovieClip in peachs)
{
peachMC.buttonMode = true;
peachMC.addEventListener(TouchEvent.TOUCH_BEGIN, pickobject3);
peachMC.addEventListener(TouchEvent.TOUCH_END, dropobject3);

peachMC.startX = peachMC.x;
peachMC.startY = peachMC.y;

}
var fl_DragBounds3:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);


function pickobject3(event:TouchEvent):void
{
    event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds3);
    event.target.parent.addChild(event.target);
    objectoriginalXX = event.target.x; 
    objectoriginalYY = event.target.y;


}

function dropobject3(event:TouchEvent):void
{
    if(event.target.hitTestObject(target_null)){
        event.target.buttonMode = false;
        event.target.x = target_mc.x;
        event.target.y = target_mc.y;
        event.target.visible = false;


    }



    else{
    event.target.x = event.target.startX;
    event.target.y = event.target.startY;
    event.target.buttonMode = true;
    trysound.play();

}
}

【问题讨论】:

    标签: actionscript-3 flash actionscript


    【解决方案1】:

    因为场景不是一个单独的对象(如 SpriteMovieClip)。因为 Flash Player 场景只是主时间轴上帧的逻辑部分(为了向后兼容,并且因为设计师/动画师倾向于用 场景 1,帧 10 的术语来思考)(而整个主时间线是一个MovieClip),因此您向其中添加一个孩子,无论您如何gotoAndPlay来回,它都会持续存在。

    混合编程和长时间线通常是一个坏主意。

    因此,要在不流血的情况下修复它,您需要分别跟踪您使用 addChildremoveChild 添加的所有内容。

    或者,或者,在某个容器中工作,而不是在主时间线中工作。当你转到其他框架时,容器不会持久化,它的所有内容也会被销毁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-07
      • 2011-09-03
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      相关资源
      最近更新 更多