我有,我已经通过属性声明它为延伸的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. 为什么我得到这个错误?
- 12. 为什么我得到这个错误?
- 13. 为什么我得到这个错误
- 14. 为什么我得到这些错误?
- 15. iPhone:为什么我得到这个错误--- HTTP错误401 --- Twitter
- 16. 为什么我得到这个错误,我犯了什么错误?
- 17. 为什么我得到这个错误,这是不寻常的
- 18. 这个查询有什么问题,为什么我得到这个错误?
- 19. 为什么我得到这个错误我app文件
- 20. 我不知道为什么我会得到这个'Addressof'错误?
- 21. 为什么我得到这个错误与我的for循环?
- 22. 我不明白为什么我得到这个错误
- 23. 为什么我得到这个错误在我的Haskell代码
- 24. 我不明白为什么我得到这个错误Valgrind的
- 25. 为什么我看到这个错误
- 26. 为什么我收到这个错误?
- 27. 为什么我得到这个名为java.lang.ArrayIndexOutOfBoundsException的错误?
- 28. 为什么我得到这个错误:找不到类“Google_Service_Calendar”?
- 29. 为什么我得到这些错误,java truetype错误?
- 30. 为什么我一直得到这个错误(无法解决)?
我认为你是对的。我按照你的建议和工作来测试它!但是现在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