如何在Flex MXML文件中使用Actionscript“Classes”?

时间:2013-08-30 06:49:58

标签: actionscript-3 flash flex actionscript mxml

到目前为止,我已经完全被这个困扰了,而且我已经有几天了,而且我所遵循的大部分链接以及我所做的搜索都让我一无所获。

我想用鼠标界面制作一个简单的游戏,但我也想添加一个预加载器。我最初使用的是minibuilder,因为它是跨平台的,我在Linux上,但是我看到添加预加载器的所有教程似乎与它不兼容。

因此我转而直接使用Flex编译器和文本编辑器,但我没有太多运气,甚至预加载器(这似乎是唯一实际工作的思考)只是一个副本来自一个偶然,工作的教程 理想情况下,我只想使用MXML文件指向预加载器 - 拥有预加载器的CustomPreloader.as文件 - 并启动Actionscript类,可能使用 FlashPunk 以及我的代码帮助

到目前为止,这是代码,除了 CustomPreloader.as 之外的每个文件,因为预加载器已经在工作:(注意:所有文件都在中〜/ ASClasses / src

File: ASClasses.mxml
--------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    backgroundColor="#333333"
    creationComplete="init();"
    width="800" height="500"
    frameRate="60"
    preloader="CustomPreloader"
>
<mx:Script>
<![CDATA[

//This part is mostly for testing purposes
//========================================
import mx.controls.Alert;
public function init():void {
    Alert.show("The first function works.");
}

//And this is what I actually wanted to do
//========================================
import Application;
//Whenever I uncomment the following line, some error is thrown and the init function stops working at all.
//public var myApp:Application = new Application;
//addChild(myApp);

]]>
</mx:Script>
</mx:Application>
File: Application.as
--------------------
package{
    import flash.display.Shape;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.display.Sprite;

    public class Application extends Sprite{
        public function Application(){
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            stage.frameRate = 60;
            rotationX = -45;
            var s:Shape = new Shape;
            s.x = 400;
            s.y = 200; 
            s.rotation = 90;
            addChild(s);
        }
        addEventListener('enterFrame', function(e:Event):void{
            s.rotation += 2.5;
        } );
    }
}

但是,取消注释添加 Application.as 所需的行似乎只是抛出一个错误,所以我认为我要么缺少一些代码,要么我做了一些事情错。

有人可以教我更多关于此的事吗,拜托?虽然我想说我对 Actionscript 有一些经验,但此时我已经非常强调自己无法做到这一点我宁愿,如果不是要求太多,请以简单的方式解释,假设我以前没有任何知识。

此外,如果有任何完整的简单教程以这种方式制作一个简单/简单的游戏/演示,我也很感激,因为到目前为止我见过的大多数教程只记录Flex和Actionscript,以及在我真正设法做任何事情之前,我很容易变得复杂。

提前致谢。

编辑1:此外,值得一提的是,它目前的方式仍然是设法在加载后抛出警报。

1 个答案:

答案 0 :(得分:1)

尝试

this.rawChildren.addChild(myApp);

而不是

addChild(myApp);

应用程序扩展Container,当您将子项添加到Container时,子项应实现IUIComponent接口。因为sprite类没有实现接口,所以它会给你一个错误。

以下是有关此Container addChild

的一些信息

修改

将添加应用程序代码放入函数中,比如

public function init():void {
    Alert.show("The first function works.");

    var myApp:Application = new Application();
    this.rawChildren.addChild(myApp);
}