
[英]How do I apply an edited actionscript class to an MXML component in Flex 4?
[英]How do I use Actionscript “Classes” with a Flex MXML file?
到目前为止,我已经完全被这个问题困扰了,已经花了几天的时间,而我一直关注的大多数链接以及我所做的搜索都使我一无所获。
我想用鼠标界面制作一个简单的游戏,但我也想添加一个预加载器。 我最初使用的是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:另外,值得一提的是,当前的方式仍然是设法在加载后引发警报。
尝试
this.rawChildren.addChild(myApp);
代替
addChild(myApp);
应用程序扩展了Container,并且在将子级添加到Container时,该子级应实现IUIComponent接口。 由于sprite类未实现该接口,因此将给您一个错误。
这是有关此容器addChild的一些信息
编辑
将添加的应用程序代码放入函数中,例如
public function init():void {
Alert.show("The first function works.");
var myApp:Application = new Application();
this.rawChildren.addChild(myApp);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.