动作中的场景与阶段3

时间:2014-04-05 21:15:14

标签: actionscript-3 flash stage scene

我有一个程序,我将它放在FlashDevelop中,它将有几个不同的窗口,每个窗口侧面有一些按钮,允许用户从一个窗口转到另一个窗口。窗口不会同时打开 - 基本上需要重新绘制背景并添加或删除功能。窗户侧面的按钮将是相同的。

现在一切正常,除了从按钮的左上角绘制位图而不是窗口的左上角。我在一个月前问了这个问题并得到了与场景相关的答案。我一直很忙,没有多少时间与之合作,但这似乎不起作用。如果我理解正确,场景只是时间轴的不同部分。我没有使用Flash,否则这将很简单 - goToAndPlay。

我在这里缺少什么?我应该使用Stage或Document类吗?代码在下面,此时我只是绘制一个黑色矩形,但是当我做位图时,情况也是一样的:

来自Main:

songbutton = new SongButton;
addChild(songbutton);
songbutton.x = 680;
songbutton.y = 100;

来自SongButton:

public class SongButton extends MusicPlay
{   
        public var songsYellow:Loader;
        public var songsWhite:Loader;
        public function SongButton(): void
        {
            songsYellow = new Loader();
            songsYellow.load(new URLRequest("images/SongsYellow.jpg"));
            songsWhite = new Loader();
            songsWhite.load(new URLRequest("images/SongsWhite.jpg"));
            addChild(songsWhite);
            addEventListener(MouseEvent.MOUSE_OVER, mouseOver);
            addEventListener(MouseEvent.MOUSE_OUT, mouseOut);
            addEventListener(MouseEvent.MOUSE_UP, mouseUp);
        }

        private function mouseOver(e:MouseEvent):void {
            addChild(songsYellow);
        }
        private function mouseOut(e:MouseEvent):void {
            addChild(songsWhite);
        }
        private function mouseUp(e:MouseEvent):void {
            SetMusicScreen();
        }
}

来自MusicPlay:

public function SetMusicScreen():void 
{
    graphics.beginFill(0x0);
    graphics.drawRect(0, 0, 800, 550);
    graphics.endFill();
}

3 个答案:

答案 0 :(得分:0)

至少在Flash中,您可以通过stage.graphics.beginFill(0x0);

直接在舞台上进行Flash绘制

如果由于某种原因,这超出了范围,你也应该能够通过MovieClip(parent).graphics.beginfill(0x0);到达MovieClip的父级。为了得到更多的父母,你可以“退后一步”{{1} 1}},MovieClip(parent.parent)等等。

这是否适用于FlashDevelop,我不知道。我认为它会,因为它基于ActionScript 3。

答案 1 :(得分:0)

  

除了从按钮的左上角绘制位图

因为您正在使用按钮的Graphics对象

public function SetMusicScreen():void 
{
    graphics.beginFill(0x0);
    graphics.drawRect(0, 0, 800, 550);
    graphics.endFill();
}

SetMusicScreen是按钮的方法,graphics也与按钮相关。你应该改变SetMusicScreen方法的逻辑,它应该引用正确的Graphics对象。例如,此类方法将更改应用程序的背景颜色:

function SetMusicScreen():void {
    //This will change background color of document class
    var myRoot: Sprite = Sprite(root);

    myRoot.graphics.clear();
    myRoot.graphics.beginFill(0);
    myRoot.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); //x,y, width, height
}

您可以放置​​窗口精灵对象,它会改变颜色,或者您可以在SetMusicScreen中沿X轴偏移绘图,因此左侧网站按钮下的背景不会改变。

答案 2 :(得分:0)

好的,我找到了办法。可能不是最好的方法,但事实证明我可以在调用类中放置一个addEventListener(MouseEvent.MOUSE_UP,gottaMouseUp),在按钮类中添加一个公共变量,让我知道是否单击了正确的按钮,并且在调用类中使用它来决定单击哪个按钮。我知道这很简单......