我试图在AS3中创建一个简单的菜单。有一个名为startButton
的精灵,按下后会调用function
startGame
,这就是它!但是,不那么容易。我使用的是flashdevelop IDE,因此我尝试拨打loader
来获取.png
spite
的{{1}}图片文件。但是,它不起作用。没有错误消息,调试器只是没有响应。有帮助吗?这是两个文件的代码
主要代码:
startButton
菜单图片代码:
package {
//Other Files
import Menu;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.ui.Mouse;
public class Main extends Sprite {
//Game values
public static var gameWidth:int = 750;
public static var gameHeight:int = 750;
public function Main() {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
addChild(Menu.startButton);
Menu.startButton.addEventListener(MouseEvent.CLICK, startGame);
stage.addEventListener(Event.ENTER_FRAME, update);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
}
//Function starts game
public function startGame(evt:MouseEvent):void {
removeChild(Menu.startButton);
}
//Updates every 60 seconds
public function update():void {
trace("Updated");
}
}
}
顺便说一句,我等待加载程序在使用之前成功加载图像,以防图像需要更多时间并且会出错。
答案 0 :(得分:2)
问题是你滥用静电。所有静态方法/属性都在类本身之前初始化。因此,静态可以接收值,但它们不能运行任何代码。所有类都准备就绪后必须运行代码,而静态初始化则不然。在你的情况下,startButton和loader被正确创建,但下一行永远不会运行'loader.load'。
不要滥用静态,你显然是在尝试使用静态来使代码编写和生活变得更容易,但最后因为你误用了它,你总会遇到更多的问题。