0

我正在使用 FlashDevelop 来测试我想用于游戏的菜单类型系统,但我在确定宽度和高度或 ScaleX 和 ScaleY 时遇到了严重问题(我不太确定哪一组是Sprite 子类的问题)。我已经阅读了许多似乎可以解决我的问题的内容,包括在添加任何子类后调整 sprite 子类的大小,但似乎都不起作用。现在,我有 3 个单独的课程。

主要的:

public class Main extends Sprite 
{

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);
    // entry point
    var BF:BFi = new BFi;
    this.addChild(BF);
    this.width = 640;
    this.height = 480;

    trace(this + "Dimensions: " + width + ", " + height);
    trace(this + "Coordinates: " + x + ", " + y);
}

}

高保真:

public class BFi extends Sprite
{
    public function BFi() 
    {
        var BFMenu:BFiMenu = new BFiMenu;
        addChild(BFMenu);
        trace(getChildAt(0));
        this.x = this.y = 0;
        this.width = 640;
        this.height = 480;
        BFMenu.x = this.y = 0;
        BFMenu.width = 640;
        BFMenu.height = 480;
        trace(this + "Dimensions: " + width + ", " + height);
        trace(this + "Coordinates: " + x + ", " + y);
    }

}

和 BFiMenu:

public class BFiMenu extends Sprite
{
    [Embed(source = "../Assets/Button1.png")]private var Button1:Class;

    public function BFiMenu() 
    {
        var Bounds:Sprite = new Sprite;
        Bounds.graphics.lineStyle(2, 0, 1);
        Bounds.graphics.drawRect(0, 0, 640, 480);
        addChild(Bounds);

        var NewButton:ComplexButton = new ComplexButton(220, 405, 200, 50, Button1, "PLAY", "Block", 50, 0x000000, function Button1(e:MouseEvent):void { /*parent.removeChildAt(0);*/ } );
        //var NewButton:ComplexButton = new ComplexButton(0, 0, 200, 50, Button1, "PLAY", "Block", 50, 0x000000, function Button1(e:MouseEvent):void { parent.removeChildAt(0); } );
        addChild(NewButton);

        this.width = 640;
        this.height = 480;

        trace(this + "Dimensions: " + width + ", " + height);
        trace(this + "Coordinates: " + x + ", " + y);
        trace(NewButton + "Dimensions: " + NewButton.width + ", " +NewButton.height);
        trace(NewButton + "Coordinates: " + NewButton.x + ", " + NewButton.y);
    }
}

名为“Bounds”的矩形具有我想要的高度和宽度(640x480),但我放置的按钮应该有一个大约 450 的 y 坐标,而不是一个接近 800 的 y 值,并且是明显失真,但仍然在屏幕上,尽管高度只有 480。

调用的“ComplexButton”类是我自己的按钮类,我已经对其进行了足够的测试,知道它可以正常工作。当我运行这个程序时,它扭曲了一切,没有什么是我想要的。任何帮助将不胜感激。

4

1 回答 1

0

几点注意事项:

每次创建显示对象时,初始 x 和 y 坐标默认为零,因此您不需要自己将它们初始化为 0。

更改空显示对象的宽度和高度将无济于事。如果显示对象具有图形内容,那么它将缩放该内容以匹配所需的宽度和高度,这也会改变缩放因子。

如果您要在 Disp.Object 中绘制一个形状来为其指定宽度和高度,则不需要显式设置这些值。

尝试删除您明确设置这些值的 3 个位置中的每一个。

于 2013-04-10T20:01:51.647 回答