【问题标题】:ActionScript 3 / MXML : My code doesn't do anythingActionScript 3 / MXML:我的代码没有做任何事情
【发布时间】:2017-06-05 13:10:04
【问题描述】:

将我的代码编译成 SWF 文件会导致程序什么都不做。我期望一个颜色为#FFAA00 的实心矩形。为什么我的代码什么也没做?

dummy.as:

//Dependencies
import flash.display.*;
import flash.events.*;

//Variables
var GlobalTimer:int = 0;
var Rect:Shape = new Shape();

//Game loader function
public function handle():void
{
    init();
}

//Init function
public function init():void
{
    addChild(Rect);
    addEventListener(Event.ENTER_FRAME,loop);
}

//Loop function
public function loop(event:Event):void
{
    var CurTimer:int = getTimer();
    var FrameDiff:int = CurTimer-GlobalTimer;
    GlobalTimer = CurTimer;

    Rect.graphics.beginFill(0xFFAA00);
    Rect.graphics.drawRect(0,0,640,480);
    Rect.graphics.endFill();
}

dummy.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application width="640" height="480" xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="handle()">
    <mx:Script source="dummy.as"/>
</mx:Application>

编译使用:

./mxmlc ../../feedsparky/src/dummy/dummy.mxml

【问题讨论】:

    标签: actionscript-3 mxml


    【解决方案1】:

    因为形状不符合小时候的条件。仔细阅读:

    http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/Container.html#addChild()

    为了将基本的 Flash 显示类添加到 Flex 显示列表,您需要将 UIComponent 作为其父级。你可以在这里看到继承链:

    http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/Application.html

    var FlashBox:UIComponent = new UIComponent;
    var Rect:Shape = new Shape;
    
    //Init function
    public function init():void
    {
        addChild(FlashBox);
        FlashBox.addChild(Rect);
    
        addEventListener(Event.ENTER_FRAME, loop);
    }
    

    【讨论】:

    • @Yoshimaster 您无法创建某个类的实例并将其添加为中间容器?好吧……
    • 就这样?抱歉,我有点糊涂了。我不经常使用 OOP 语言,因此并不真正了解这些术语。基本上我没明白你的意思。
    • @Yoshimaster 是的,这就是您需要更改的全部内容 - 只需使用空的 UIComponent 作为类的容器,例如 ShapeBitmap SpriteMovieClipTextField
    • 这样做了,但现在我有另一个问题:我的程序以 320X 和 24Y 的偏移量绘制矩形,因此覆盖了窗口右侧的大部分,但不是全部。跨度>
    • @Yoshimaster 因为默认对齐和缩放模式设置为帮助动画电影适应舞台,如果舞台宽度和高度与它们发布的不同。使用 stage.align = StageAlign.TOP_LEFT;stage.scaleMode = StageScaleMode.NO_SCALE;
    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 2014-08-11
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2012-09-07
    相关资源
    最近更新 更多