我想用鼠标界面制作一个简单的游戏,但我也想添加一个预加载器。我最初使用的是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:此外,值得一提的是,它目前的方式仍然是设法在加载后抛出警报。
答案 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);
}