无法将 flash.display::AVM1Movie 转换为 flash.display.MovieClip错误原因

本文探讨了在Adobe Flash AS3中加载并获取外部SWF文件帧数的方法。作者尝试在A.swf中加载B.swf,并通过进度条展示B.swf的播放进度。遇到无法获取帧数的问题后,发现是由于版本不兼容导致,最终解决方案是确保两个SWF文件版本一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要命的问题...原来是不同版本发布的swf,版本不兼容

AS3中如何获取外部加载SWF的帧数

我想在A.swf中加载影片B.swf 并获取到B.swf的当前帧和总帧数,并通过进度条显示B.swf的播放过程

但现象无法获取到B.swf的帧数

我的代码如下:

import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;

//变量声明
var contentSwf:MovieClip;
var url:String = "gk01.swf";
var loader:Loader = new Loader();
//loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,mcLoading);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadedHandler);
var request:URLRequest = new URLRequest(url);
loader.load(request);
addChild(loader);

function loadedHandler(event:Event):void {
       trace(event.target.content);
       trace(event.target.loader.content);
       contentSwf = MovieClip(event.target.loader.content);
       trace(contentSwf.totalFrames);
}

编译报错:


[object AVM1Movie]
[object AVM1Movie]
TypeError: Error #1034: 强制转换类型失败:无法将 flash.display::AVM1Movie@1118bcc1 转换为 flash.display.MovieClip。
       at class_as3_fla::MainTimeline/loadedHandler()

 

 flash player 中的 AVM1 和 AVM2 之间是不能相互通讯的,我的程序没有问题,而是我加载的外部SWF文件是flash 8编译的,在CS3中无法访问它的属性,将外部加载的SWF文件修改属性,重新用CS3发布一下就可以了。

 

崩溃死了,调了1个多小时~~~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值