0

您好我正在使用 FLVPlayback 2.5 组件并收到此错误,请帮助!- 无法将 fl.video: 转换为 flash.events.VideoEvent。

as3 代码使用 -

            comp.addEventListener(Event.COMPLETE, videoComplete);

            function videoComplete(event:VideoEvent):void {
                trace("videoComplete");
            }

完全错误 -

TypeError:错误 #1034:类型强制失败:无法将 fl.video::VideoEvent@6e974dd1 转换为 flash.events.VideoEvent。在 flash.events::EventDispatcher/dispatchEventFunction() 在 flash.events::EventDispatcher/dispatchEvent() 在 fl.video::FLVPlayback/ http://www.adobe.com/2007/flash/flvplayback/internal::handleVideoEvent () 在 flash.events::EventDispatcher/dispatchEventFunction() 在 flash.events::EventDispatcher/dispatchEvent() 在 fl.video::VideoPlayer/ http://www.adobe.com/2007/flash/flvplayback/internal: :httpDoStopAtEnd() 在 fl.video::VideoPlayer/ http://www.adobe.com/2007/flash/flvplayback/internal::httpNetStatus()

修复感谢罗尼!欢呼的人。这对我有用..

            import fl.video.VideoEvent;

            comp.addEventListener(Event.COMPLETE, videoComplete);

            function videoComplete(event:Event):void {
                trace("videoComplete");
            }
4

5 回答 5

4

lostPixels 在很大程度上解释了错误的含义,但事实并非如此VideoEvent,它只是Event

 comp.addEventListener(Event.COMPLETE, videoComplete);

 function videoComplete(event:Event):void //event:Event not event:VideoEvent
 {
     trace("videoComplete");
 }
于 2012-11-01T21:30:09.457 回答
2

我在那里发表了评论,但我想在这里给你一个完整的解释。当你说:

addEventListener(Event.COMPLETE, videoComplete);

它实际上确实调用了您的函数……但事件与您预期的不同。这是因为它实际上是在触发一个 fl.video.VideoEvent,它还有一个名为 COMPLETE 的常量。Event.COMPLETE 和 VideoEvent.COMPLETE = 一个字符串值“完成”,所以它调用你的函数。

第二个问题是功能:

function videoComplete(event:VideoEvent):void {

正在监听 flash.events.VideoEvent。当您使用完整的代码时,这可能是一个意外。但是当你调用函数时,它正在接收一个 fl.video.VideoEvent... 因此错误

这样做:

import fl.video.VideoEvent;

addEventListener(VideoEvent.COMPLETE, videoComplete);

function videoComplete(event:VideoEvent):void {

你都准备好了!

于 2012-11-01T22:02:50.547 回答
1

类型强制失败是您尝试将一个严格类型化的变量转换为另一个的结果。这意味着什么(它不是为了容易理解而写的)是这样的:

假设我们有两个变量,一个是数字,一个是字符串。如果我们尝试说 number = string,Flash 会吐出那个错误,因为 string 不能是数字。

这与您的代码有关的是您正在尝试将Event转换为VideoEvent

要解决此问题,请将您的代码更改为以下行:

  comp.addEventListener(VideoEvent.COMPLETE, videoComplete);
于 2012-11-01T15:52:05.847 回答
1

我认为这可能与您所针对的 Flash 播放器版本有关。你能瞄准 FP9 或 FP10 吗?(在 Flash Professional 的属性面板中)

于 2012-11-01T15:40:45.610 回答
1

您可以在视频末尾添加一个提示点并聆听。

假设 comp 是您的 flvPlayback 组件的实例名称...

import fl.video.FLVPlayback;
import fl.video.MetadataEvent;

comp.addEventListener(MetadataEvent.CUE_POINT, video_cp_listener, false, 0, true);

function video_cp_listener(eventObject:MetadataEvent):void {

//run code here when a cue point is found
trace(eventObject.info.name);

}
于 2012-11-01T21:05:19.750 回答