AS3 Starling:尝试添加视频

3
我是一位完全不懂AS3/Starling的新手,但我想在一个“闪屏”背景中(通过编程)添加FLV视频文件。我在网上找到的示例代码基本上都是这样的: var v:Video = new Video(100,100); this.addChild(v);
这个代码在扩展flash.display.Sprite的顶级类中有效,但我的Game类(扩展starling.display.Sprite)失败了,并抱怨“将类型Video的值隐式强制转换为不相关类型DisplayObject”。奇怪的是,Starling Sprite类的addChild函数的签名与Flash Sprite类相同。
所以问题基本上就是:为什么我似乎无法将Video对象作为子元素添加到Starling Sprite类中(但可以成功添加到Flash Sprite类中)?
我相信答案非常简单……如果需要更多的代码或其他内容,请告诉我。或者如果我的方法完全错误,请告诉我。
2个回答

3
这是因为Starling框架的设计目标是模仿常规Flash显示列表(尽管没有完全重新创建所有功能)。具体来说,您正在尝试传递对 starling.display.DisplayObject 类型对象的引用,而不是 flash.display.DisplayObject ,这将导致适当的错误。
为了在Starling中播放视频,您可以将电影的每个帧上传到纹理中。请查看 Starling论坛上的此主题。

谢谢Antoine:在那里定义完整的类完全解释了为什么它们看起来是相同的签名,但实际上它们并不相同。 - Narcissus

3

或者您可以将视频添加到位于Starling上方的Flash层中:

Starling.current.nativeOverlay.addChild(v);

Starling.current.nativeOverlay.removeChild(v);

请注意,这种方法不使用Starling GPU绘图。


谢谢crooksy:这暂时解决了我的问题(尽管我意识到我应该像Antoine建议的那样使用纹理)。 - Narcissus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接