Actionscript 3 Adobe Flash-访问可能未定义的属性已完成
我想在flash中循环一些视频,我找到了这段代码,但当我尝试运行它时,“通过引用静态类型类完成对可能未定义属性的访问”Actionscript 3 Adobe Flash-访问可能未定义的属性已完成,actionscript-3,flash,actionscript,flash-cs6,Actionscript 3,Flash,Actionscript,Flash Cs6,我想在flash中循环一些视频,我找到了这段代码,但当我尝试运行它时,“通过引用静态类型类完成对可能未定义属性的访问” video.source="video.flv"; import fl.video.*; function onFLVCOMPLETE(event:VideoEvent):void{ event.target.play(); } video.addEventListener(VideoEvent.COMPLETE, onFLVCOMPLETE); 不知
video.source="video.flv";
import fl.video.*;
function onFLVCOMPLETE(event:VideoEvent):void{
event.target.play();
}
video.addEventListener(VideoEvent.COMPLETE, onFLVCOMPLETE);
不知道发生了什么,所以任何帮助都会很好编辑
这就是正在发生的事情:
FlashPro/AdobeAnimate IDE自动导入flash.events
包(无论您是否明确告诉它)。执行此操作时,flash.events.VideoEvent
类将替换导入的fl.video.VideoEvent
类,作为使用VideoEvent
时引用的类
要解决这个问题,您只需要使用完全限定的类名。因此,与其使用:
VideoEvent
您使用:
fl.video.VideoEvent
因此,您的代码应该如下所示:
function onFLVCOMPLETE(event:fl.video.VideoEvent):void{
event.target.play();
}
video.addEventListener(fl.video.VideoEvent.COMPLETE, onFLVCOMPLETE);
要测试此行为,您需要创建一个新的FlashPro项目,并在时间轴上使用以下代码:(您还需要向库中添加视频组件) 输出窗口中的预期结果是
fl.video::VideoEvent
,但实际结果是:
flash.events::VideoEvent
因此,即使您只导入了
fl.video.VideoEvent
,VideoEvent
指的是flash.events.VideoEvent
(未导入).我认为OP所寻找的正确的VideoEvent
是一个具有常数的类…@Aaron Owen-考虑到@akmozo的上述评论,也许你得到了冲突的VideoEvent类(来自flash.events
包的类和来自fl.video
包的类)-尝试此操作并查看是否已修复:video.addEventListener(fl.video.VideoEvent.COMPLETE,onFLVCOMPLETE)代码>但是,所有这些完整事件都是相同的字符串,因此它应该与事件.complete
以及fl.video.VideoEvent.complete
@akmozo,很好的捕获,我不使用fl包/组件,也从未注意到还有另一个VideoEvent类。@fabriceacquart哇,你的评论有点过火了?只是因为你明白这并不意味着其他人都明白,我以前从未使用过flash/actionscript,我正在努力学习。@AaronOwen-你明白了吗?忽略上面的评论,您的导入fl.video.*
将导入所需的类,因此无需添加import fl.video.VideoEvent
(尽管后者更为具体,因此是更好的做法)。这里有些人喜欢吹毛求疵,在没有正确理解被问到什么以及问题是什么的情况下投反对票…@FabriceAcquart-OP正在导入该类:import fl.video.*
通配符*
导入该包中的所有类,其中包括fl.video.VideoEvent。这个问题在我的回答的第二部分,它实际上是一个非常好的问题,有一个相当模糊的解决方案,这肯定是不明显的。哦,是的,错过了那一行,出于某种原因xD
import fl.video.VideoEvent;
trace(flash.utils.getQualifiedClassName(VideoEvent));