[英]AS3: Can't create Movieclip class instance?
我只是在學習如何使用一些非常基本的代碼在 AS3 中使用類,我正在努力弄清楚如何做最簡單的事情。
我已將文檔類設為“Test”類(本質上是我的主類),我試圖用它做的就是將“WhiteBall”類(影片剪輯)的一個實例添加到舞台上。
'WhiteBall' 類應該允許我用鍵盤控制影片剪輯。 我不知道這部分是否有效,因為我不斷收到此錯誤:
類型錯誤:錯誤 #1009:無法訪問空對象引用的屬性或方法。 在 WhiteBall$iinit()[/Users/Owner/Desktop/Animation/Coding/WhiteBall.as:13] 在 Test$iinit()[/Users/Owner/Desktop/Animation/Coding/Test.as:11]
這是“測試”類的代碼:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Test extends MovieClip
{
var whiteBall:WhiteBall = new WhiteBall ();
public function Test() {
addEventListener(Event.ENTER_FRAME, whiteBallSpawn);
}
public function whiteBallSpawn(evt:Event) {
stage.addChild(whiteBall);
whiteBall.x = 200;
whiteBall.y = 250;
}
}
}
這是“WhiteBall”類的代碼:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class WhiteBall extends MovieClip
{
public function WhiteBall() {
stage.addEventListener(KeyboardEvent.KEY_DOWN, keysdown);
}
public function keysdown(mykey:KeyboardEvent) {
if(mykey.keyCode==Keyboard.UP) {
this.y--;
}
if(mykey.keyCode==Keyboard.DOWN) {
this.y++;
}
if(mykey.keyCode==Keyboard.RIGHT) {
this.x++;
}
if(mykey.keyCode==Keyboard.LEFT) {
this.x--;
}
}
}
}
'Test' 類中的第 11 行錯誤是指這一行:
var whiteBall:WhiteBall = new WhiteBall ();
我不知道這里有什么問題。 您能給我的任何幫助將不勝感激。
Organis 所說的是這樣的:當您創建一個 DisplayObject,例如一個 MovieClip,它是您的 WhiteBall 擴展的類,那么該對象的 stage 屬性為空。 這意味着當您嘗試在其構造函數上訪問白球的 stage 屬性時
public function WhiteBall()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, keysdown);
}
因為 stage 為空,所以拋出了一個錯誤。 所以要解決這個問題,最安全和最常見的方法是等到球被添加到舞台上,然后監聽任何舞台鍵盤事件。 像這樣:
public function WhiteBall()
{
if(stage != null)
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, keysdown);
}
else
{
this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}
}
private function addedToStage(e:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keysdown);
}
因此,當您的 Test 類實例將球添加到舞台時,您的 WhiteBall 實例的 stage 屬性將具有一個值,因此可以安全地偵聽任何鍵盤事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.