我有,我已經通過屬性聲明它爲延伸的BitmapData背景類庫PNG圖像。 當我鍵入:
var BMDClass:Class = getDefinitionByName("Background") as Class;
我得到:變量背景未定義! 但是當我做: trace(getQualifiedClassName(new Background(0,0)));
我得到:背景! 我找不出錯誤的原因。爲什麼我得到這個錯誤
0
A
回答
1
我相信這是因爲你需要有一個Background類的引用,然後才能真正獲得按名稱的定義。簡單地導入Background類不會將類編譯到您的swf中,您需要以某種方式引用它。創建類的實例是一種方法,但是您也可以在導入後引用該類。
嘗試類似...
import com.somedomain.Background;
Background;
這應該創建一個你類的引用,並確保它在給您的SWF編譯。
編輯顯示多個班級的用法。
如果你有多個背景類,我會建議試着讓它們堅持一個接口。然後,我會創建一個後臺工廠類,允許您從配置文件創建後臺實例。這也意味着您將能夠將所有對後臺類的引用放在工廠類中。這是工廠的樣子。
// let the compiler know we need these background classes
import com.somedomain.backgrounds.*;
DarkBackground;
LightBackground;
ImageBackground;
class BackgroundFactory
{
public function create(type:String):Background
{
var bgClass:Class = getDefinitionByName(type) as Class;
return new bgClass();
}
}
然後從你的配置得到一個背景情況下,你會做這樣的事情......
// parse your config file...not sure what format you've got it in.
// instantiate a background factory and create an instance based on the name from your config.
var bgFactory:BackgroundFactory = new BackgroundFactory();
var bg:Background = bgFactory.create(someStr);
編輯延長例如
package com.somedomain.background
{
interface Background
{
function get img():Bitmap;
}
}
package com.somedomain.background
{
class SomeImageBackground extends Sprite implements Background
{
protected var _img:Bitmap;
public function SomeImageBackground():void
{
_img = new SomeAssetFromLibrary();
}
public function get img():Bitmap
{
return _img;
}
}
}
使用這些外部類會讓你對圖像的來源有更多的控制。您可以將它們加載到外部,使用嵌入元數據嵌入它們,甚至可以從舞臺加載它們。
相關問題
- 1. 爲什麼我得到這個錯誤?
- 2. 爲什麼我得到這個錯誤?
- 3. 爲什麼我得到這個錯誤?
- 4. 爲什麼我得到這個錯誤?
- 5. 爲什麼我得到這個錯誤?
- 6. 爲什麼我得到這個錯誤?
- 7. 爲什麼我得到這個錯誤?
- 8. 爲什麼我得到這個錯誤?
- 9. 爲什麼我得到這個錯誤?
- 10. 爲什麼我得到這個錯誤?
- 11. iPhone:爲什麼我得到這個錯誤--- HTTP錯誤401 --- Twitter
- 12. 爲什麼我得到這個錯誤,我犯了什麼錯誤?
- 13. 爲什麼我得到這個錯誤,這是不尋常的
- 14. 這個查詢有什麼問題,爲什麼我得到這個錯誤?
- 15. 爲什麼我得到這個錯誤我app文件
- 16. 我不明白爲什麼我得到這個錯誤Valgrind的
- 17. 爲什麼我收到這個錯誤?
- 18. 爲什麼我看到這個錯誤
- 19. 爲什麼我一直得到這個NullReferenceException錯誤?
- 20. 爲什麼我得到這個SQL錯誤?
- 21. CakePHP爲什麼我得到這個錯誤?
- 22. 爲什麼我得到這個錯誤'.class'的預期?
- 23. 爲什麼我得到這個線程錯誤?
- 24. 爲什麼我從這段代碼中得到一個錯誤?
- 25. Java掃描器 - 爲什麼我會得到這個錯誤?
- 26. 爲什麼我得到這個異常錯誤?
- 27. 爲什麼我在angular.min.js中得到這個錯誤
- 28. 參數無效ERROR - VB.Net - 爲什麼我得到這個錯誤?
- 29. 爲什麼我得到這個語法錯誤
- 30. 爲什麼我得到這個錯誤java.lang.ClassNotFoundException?
我認爲你是對的。我按照你的建議和工作來測試它!但是現在getDefinitionByName的靈活性已經被阻塞了,因爲我將不得不實例化這個類,但是我想通過它的名字得到它的實例以便使用配置文件。你能提出一個解決方案嗎? – Ponty 2010-07-06 15:58:45
我試着給出一個更深入的答案,你可以如何使用你的配置文件來做到這一點。讓我知道它是否合理。 – 2010-07-06 17:07:39
嘿,非常感謝你給我很多想法!我還有一個小問題:你寫:import com.somedomain.backgrounds。*;但你如何把你的圖像放在那個包裏?我的意思是我請使用閃光燈庫和圖像轉換成的BitmapData的用戶定義的子類或(之前一點,我發現)的EMBED標籤,如[嵌入(源=「image.png」)] 公共Background1:類。 你如何實現在包中包含所有用戶定義的圖形類? 如果只是我之前告訴過你的類被創建,你如何定義一個接口?使用界面作爲標記?能給我看看麼? – Ponty 2010-07-06 18:06:20