首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3体系结构:如何在多个调用中在一个对象的单个实例之间切换?

AS3体系结构:如何在多个调用中在一个对象的单个实例之间切换?
EN

Stack Overflow用户
提问于 2013-09-11 11:32:37
回答 1查看 251关注 0票数 0

我是actionscript新手,在使用FlashDevelop显示对象的单个实例时遇到了问题。

我有一个main.as,我在其中显示一个图像作为背景。然后,我显示一个矩形,其中包含一些文字,当鼠标悬停在一个目标(出现/消失在舞台上)。矩形位于TextBox.as类中。

我知道我的代码非常混乱,因为每当我到达目标时(调用之间),它都会创建矩形的一个新实例。但是如果我试图改变它,它会给我带来错误。而且,我似乎不能删除我的矩形(使用removeChild()),一旦它被创建,它就找不到子矩形。

有人能告诉我我应该使用什么体系结构,以便只创建一个矩形实例吗?

下面是我的一些代码:

代码语言:javascript
复制
//IMPORT LIBRARIES
import Classes.TextBox;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import com.greensock.TweenLite;

// Setup SWF Render Settings
[SWF(width = "620", height = "650")]

public class Main extends Sprite 
{
    //DEFINING VARIABLES
    [Embed(source="../lib/myimage.jpg")]
    private var picture:Class;
    private var myTween:TweenLite;

    //CONSTRUCTOR 
    public function Main():void 
    {   
        addChild(new TextBox);
        addChild(new picture);
        addEventListener(MouseEvent.MOUSE_OVER, appear);
    }

    //ROLLDOWN FUNCTION
    public function appear(e:MouseEvent):void 
    {
        trace("Appear");
        var text:TextBox = new TextBox();
        addChild(text);
        addChild(new picture);

        if (picture) {
            removeEventListener(MouseEvent.MOUSE_OVER, appear);
            //addEventListener(Event.COMPLETE, appearComplete);
            myTween = new TweenLite(text, 1, { y:340 , onComplete:appearComplete, onReverseComplete:disappearComplete} );
        }
    }

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-11 12:45:43

我不知道你想实现什么推文,但你应该重用你的文本框实例,例如:

代码语言:javascript
复制
import Classes.TextBox;
import com.greensock.TweenLite;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;

[SWF(width = "620", height = "650")]
public class Main extends Sprite {

    [Embed(source="../lib/myimage.jpg")]
    private var pictureClass:Class;

    private var picture:Bitmap;
    private var textbox:TextBox;

    public function Main():void {
        if (stage)
            init();
        else
            addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void {
        removeEventListener(Event.ADDED_TO_STAGE, init);

        picture = new pictureClass();
        textbox = new TextBox();

        addChild(picture);
        addChild(textbox);

        addEventListener(MouseEvent.MOUSE_OVER, tween);
    }

    public function tween(e:MouseEvent):void {
        removeEventListener(MouseEvent.MOUSE_OVER, tween);
        TweenLite.to(textbox, 1, { y:340, onComplete:reverse } );
    }

    private function reverse():void {
        TweenLite.to(textbox, 1, { y:0, onComplete:tweenComplete } );
    }

    private function tweenComplete():void {
        addEventListener(MouseEvent.MOUSE_OVER, tween);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18740001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档