- 浏览: 716849 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (389)
- flex (150)
- java (55)
- flex_sharedObject (4)
- iphone/android (7)
- red5 (4)
- blazeds (19)
- ajax (3)
- flex&java (9)
- 聊天室 (2)
- flex的问题 (1)
- game (8)
- flex_xml (1)
- flex组件学习 (2)
- JGroups (1)
- 中转站 (2)
- ruby (7)
- flex_js (5)
- C/C++ (14)
- perl (2)
- db (13)
- air (10)
- hibernate (8)
- flash_flex_as_3d (2)
- struts (4)
- dwr (8)
- freemarker (2)
- AS (22)
- 工具 (6)
- js_jquery_ext_yui (4)
- .net (1)
- C# (1)
- 前端 (1)
最新评论
-
136900923:
您好,您的代码我不是很懂,我想跟您交流一下,我的qq邮箱:13 ...
hibernate做无限极菜单树如此简单 -
fykyx521:
两个同一个功能
flex_flush_Socket 安全沙箱解决 -
ustb:
你上下两个代码类之间没关系
flex_flush_Socket 安全沙箱解决 -
u010656335:
...
flex发送QQ表情 -
u010656335:
flex发送QQ表情
使用别人 avm1Toavm2类 用js或得文件路径。/**
* thanks for http://nsdevaraj.wordpress.com/2008/10/16/avm1movie-controller-in-flex/
* and http://troyworks.com/blog/2007/09/17/avm2loader-converting-avm1-to-avm2/
*
* AVM1MovieProxy
*
* modified by sban 2009/2/21
* http://blog.sban.com.cn/
*/
package sban.flexStudy.avm1to2
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.errors.EOFError;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import flash.utils.Endian;
import mx.controls.Alert;
import mx.core.UIComponent;
[Event(name="enterFrame", type="flash.events.Event")]
[Event(name="complete", type="flash.events.Event")]
[Event(name="ioError", type="flash.events.IOErrorEvent")]
[Event(name="securityError", type="flash.events.SecurityErrorEvent")]
public class AVM1MvoieProxy extends UIComponent
{
public function AVM1MvoieProxy()
{
this.addChild(_loader);
mx.controls.Alert.show("init");
}
private var _urlLoader : URLLoader;
private var _loader:Loader = new Loader();
private var _isReady : Boolean = false;
private var _movieClip : MovieClip;
public var url : String;
public var autoPlay : Boolean = false;
public function get currentFrame() : int
{
return isReady ? _movieClip.currentFrame : 0;
}
public function get totalFrames() : int
{
return isReady ? _movieClip.totalFrames : 0;
}
public function get isReady() : Boolean
{
return _isReady;
}
public function nextFrame() : void
{
if(isReady) _movieClip.nextFrame();
}
public function prevFrame() : void
{
if(isReady) _movieClip.prevFrame();
}
public function nextScene() : void
{
if(isReady) _movieClip.nextScene();
}
public function prevScene() : void
{
if(isReady) _movieClip.prevScene();
}
public function stop() : void
{
if(isReady) _movieClip.stop();
Alert.show("stop");
}
public function play() : void
{
if(isReady) _movieClip.play();
}
public function gotoAndStop(frame : Object, scene : String = null) : void
{
if(isReady) _movieClip.gotoAndStop(frame, scene);
}
public function gotoAndPlay(frame : Object, scene : String = null) : void
{
if(isReady) _movieClip.gotoAndPlay(frame, scene);
}
override protected function initializationComplete():void
{
super.initializationComplete();
if(url) load(url);
}
public function load(url : String = null):void
{
var path : String = url ? url : this.url;
if(!path) return;
_urlLoader = new URLLoader();
_urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
_urlLoader.addEventListener(Event.COMPLETE, completeHandler);
_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
_urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
_urlLoader.load( new URLRequest(path));
}
private function completeHandler(event:Event):void
{
event.currentTarget.removeEventListener(Event.COMPLETE, completeHandler);
var inputBytes:ByteArray = ByteArray(_urlLoader.data);
inputBytes.endian = Endian.LITTLE_ENDIAN;
if (isCompressed(inputBytes)) {
uncompress(inputBytes);
}
var version:uint = uint(inputBytes[3]);
if (version <= 10) {
if (version == 8 || version == 9 || version == 10){
flagSWF9Bit(inputBytes);
}
else if (version <= 7) {
insertFileAttributesTag(inputBytes);
}
updateVersion(inputBytes, 9);
}
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);
_loader.loadBytes(inputBytes);
}
private function loadCompleteHandler(event : Event) : void
{
event.currentTarget.removeEventListener(Event.COMPLETE, loadCompleteHandler);
_movieClip = _loader.content as MovieClip;
_isReady = true;
dispatchEvent(new Event(Event.COMPLETE));
if(!autoPlay) stop();
_movieClip.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function enterFrameHandler(event : Event) : void
{
dispatchEvent(event);
}
/**
*
* @param bytes
* @return
*
*/
private function isCompressed(bytes:ByteArray):Boolean
{
trace(bytes.toString());
return bytes[0] == 0x43;
}
private function uncompress(bytes:ByteArray):void
{
var cBytes:ByteArray = new ByteArray();
cBytes.writeBytes(bytes, 8);
bytes.length = 8;
bytes.position = 8;
cBytes.uncompress();
bytes.writeBytes(cBytes);
bytes[0] = 0x46;
cBytes.length = 0;
}
private function getBodyPosition(bytes:ByteArray):uint
{
var result:uint = 0;
result += 3; // FWS/CWS
result += 1; // version(byte)
result += 4; // length(32bit-uint)
var rectNBits:uint = bytes[result] >>> 3;
result += (5 + rectNBits * 4) / 8; // stage(rect)
result += 2;
result += 1; // frameRate(byte)
result += 2; // totalFrames(16bit-uint)
return result;
}
private function findFileAttributesPosition(offset:uint, bytes:ByteArray):uint
{
bytes.position = offset;
try {
for (;;) {
var byte:uint = bytes.readShort();
var tag:uint = byte >>> 6;
if (tag == 69) {
return bytes.position - 2;
}
var length:uint = byte & 0x3f;
if (length == 0x3f) {
length = bytes.readInt();
}
bytes.position += length;
}
}
catch (e:EOFError) {
}
return NaN;
}
private function flagSWF9Bit(bytes:ByteArray):void
{
var pos:uint = findFileAttributesPosition(getBodyPosition(bytes), bytes);
if (!isNaN(pos)) {
bytes[pos + 2] |= 0x08;
}
}
private function insertFileAttributesTag(bytes:ByteArray):void
{
var pos:uint = getBodyPosition(bytes);
var afterBytes:ByteArray = new ByteArray();
afterBytes.writeBytes(bytes, pos);
bytes.length = pos;
bytes.position = pos;
bytes.writeByte(0x44);
bytes.writeByte(0x11);
bytes.writeByte(0x08);
bytes.writeByte(0x00);
bytes.writeByte(0x00);
bytes.writeByte(0x00);
bytes.writeBytes(afterBytes);
afterBytes.length = 0;
}
private function updateVersion(bytes:ByteArray, version:uint):void
{
bytes[3] = version;
}
private function ioErrorHandler(event:IOErrorEvent):void
{
dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR));
}
private function securityErrorHandler(event:SecurityErrorEvent):void
{
dispatchEvent(new SecurityErrorEvent(SecurityErrorEvent.SECURITY_ERROR));
}
}
}
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:avm1to2="sban.flexStudy.avm1to2.*" fontSize="12" creationComplete="init()"> <mx:Script> <![CDATA[ [Bindable] private var totalFrames : int = 0; [Bindable] private var currentFrame : int = 0; ]]> </mx:Script> <mx:VBox> <mx:Canvas backgroundColor="#D9DCE2"> <avm1to2:AVM1MvoieProxy id="avm1" url=""> <avm1to2:complete> <![CDATA[ totalFrames = avm1.totalFrames; ]]> </avm1to2:complete> <avm1to2:enterFrame> <![CDATA[ currentFrame = avm1.currentFrame; ]]> </avm1to2:enterFrame> </avm1to2:AVM1MvoieProxy> </mx:Canvas> <mx:HBox> <mx:HSlider maximum="{totalFrames}" minimum="0" labels="goto" change="onChange(event)" id="hs"/>//滚动条 <mx:Label text="current frame:{currentFrame}"/> <mx:Label text="total frames:{totalFrames}"/> <mx:Button label="play" click="avm1.play()"/>play <mx:Button label="stop" click="avm1.stop()"/>stop <mx:Button label="gotoAndStop(10)" click="avm1.gotoAndStop(10)"/> <mx:Button id="btnBrowser" x="10" y="10" label="选择swf" />//选择要播放的swf avm1的 </mx:HBox> </mx:VBox> <mx:Script> <![CDATA[ private function onChange(event:Event){ avm1.gotoAndPlay(Math.round(hs.value));//gotoplay } ]]> </mx:Script> <mx:Script> <![CDATA[ import mx.controls.Alert; private function init():void { ExternalInterface.addCallback("OnFileChange",frSelectHandler);//注册JS回调 btnBrowser.addEventListener(MouseEvent.CLICK,mouseClickHandler); } private function mouseClickHandler(event:MouseEvent):void { ExternalInterface.call("Browser");//调用JS中Browser函数 } private function frSelectHandler(path:String):void { // Alert.show(path); avm1.load(path); } ]]> </mx:Script> </mx:Application>
在index.templete.html中 加入如下 <script language="JavaScript" type="text/javascript"> var requiredMajorVersion = 9; var requiredMinorVersion = 0; var requiredRevision = 28; //关键代码 function Browser() { document.getElementById("fileInput").click(); } function OnFileChange() { thisMovie("flex3UserAVM1Swf").OnFileChange //flex3UserAvm1Swf是 application.mxml起的名字,不是要播放的swf名 (document.getElementById("fileInput").value); } function thisMovie(movieName) { if (navigator.appName.indexOf("Microsoft") != -1) { return window[movieName]; } else { return document[movieName]; } } </script> </head> <body scroll="no"> <input type="file" id="fileInput" style="display:none" onchange="OnFileChange()" />
- flex3UserAVM1Swf.zip (19 KB)
- 下载次数: 59
评论
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at AVM1MvoieProxy/completeHandler()[F:\flexworkspace\onLineBook\src\AVM1MvoieProxy.as:136]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
没用过facebook不知道我也不知道怎么解决
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at AVM1MvoieProxy/completeHandler()[F:\flexworkspace\onLineBook\src\AVM1MvoieProxy.as:136]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
发表评论
-
转深入理解Flash的沙箱 – Security Domains
2014-01-22 09:35 837一篇很经典的进阶文章,国外牛人的分享,清晰明了,图文并茂,适 ... -
flex 很有用的东东!
2010-06-17 23:50 1263网上找了好久,原来API中就有! -
flex出现的一些问题
2010-04-08 12:19 16631.kingnarestyle.swf和flexlib 的Su ... -
flex 样式工作原理【转】
2010-04-08 12:09 1323http://hi.baidu.com/ls_mcx/blog ... -
在FlexBuilder3中使用Actionscript3进行元编程
2010-03-11 19:15 1034http://flash.9ria.com/thread-46 ... -
Error: No class registered for interface mx
2010-02-01 09:36 1244http://www.gold98.net/blog/arti ... -
Flash 视频(FLV)编码,转换,录制,播放方案一网打尽
2010-01-16 18:34 2018http://www.htmlit.com.cn/post/8 ... -
FLEX中使用FLVPlayback控件.
2010-01-16 18:29 1396http://www.cnblogs.com/xxcainia ... -
flex 继承Application及xml命名空间
2009-12-30 18:43 1520<?xml version="1.0" ... -
flex Repeater effert加效果
2009-12-15 17:25 1520package cn.ishion.component { ... -
学习自定义组件---ConstomButton
2009-12-14 15:06 1829效果只是让Button动了下, 上传了flash源文件 p ... -
flex编译生成的As代码
2009-12-09 18:30 1312new flexProject ->起名叫 test ... -
flex自定义preloader
2009-12-09 17:43 1913package cn.ishion.component { ... -
flex自定义程序 preloader 加载多个资源
2009-12-09 02:05 2284package cn.ishion.component { ... -
Flex Builder编译错误An internal build error has occurred的解决方法
2009-12-05 16:44 3212原文:http://as3blog.com/resources ... -
flex uicomponent.addChild(Button) Button不显示
2009-12-04 19:23 2142设置下Button的宽度和高度就行了 var ui:U ... -
as3 xls导出excel乱码问题解决办法
2009-12-04 11:37 3391http://blog.csdn.net/Baijinwen/ ... -
FlashDevelop配置Flex4(gumbo)环境
2009-12-04 10:27 3053http://www.flexrain.cn/fl ... -
flex gooogle code as3xls导出数据到excel
2009-12-03 19:16 2358var ex:ExcelFile=new ExcelFile ... -
Flex坐标系统及转换
2009-12-02 22:10 3098http://flash.9ria.com/thread-40 ...
相关推荐
### SWF文件结构及AVM原理详解 #### 一、SWF文件结构 SWF(Small Web Format)文件是Adobe Flash Player使用的文件格式之一,主要用于在网络上发布交互式内容、动画和游戏等。为了深入理解Flash及其运行机制,我们...
DTV-FLASH-AS2 由DevTrip Video开发人员及其贡献者提供支持的 Flash AS 2 (AVM1) 视频播放器。 [Need independent contributors and Investors for TBD section.]目标这个包提供了一个可重用的视频播放器组件,可以...
这款软件支持的输出格式广泛,包括AVI、DVD、MP4、MPEG、WMV、FLV以及SWF等,满足了不同设备和平台的播放需求。下面将详细介绍这些视频格式的特点和应用场景,以及AVS Video Converter在转换过程中的作用。 1. **...
由DevTrip Video开发人员及其贡献者提供支持的 Flash AS 3 (AVM2) 视频播放器 [Need independent contributors and Investors for TBD section.] 目标 这个包提供了一个可重用的视频播放器组件,可以很容易地与任何...
-SWF解析器,从ByteArray中播放声音,直接控制AVM1的动画类容。 -丰富的文本缓动,部分文字Filter,渐变色文字,字符差异对比,ANSI转码,URL解码,中文数字,拼音码,这是一个单独的底层包 -完全由FLASH实现的拼音...
ActionScript 3.0在执行时依赖于ActionScript虚拟机(AVM),它的代码经过编译器转化为字节码,嵌入到SWF文件中,由Flash Player进行解释和执行。这一过程使得AS 3.0具备了更高的性能和效率。其新特性包括核心语言功能...
- **AVM1Movie**:表示ActionScript 1.0/2.0中创建并已加载的SWF文件。 - **Bitmap**:用于加载和显示位图图像,并可以与BitmapData类结合创建自定义图像。 - **MorphShape**:用于形状补间动画,但在AS3中不能...
随着FlashPlayer版本的更新,特别是FlashPlayer 9和AVM2(ActionScript Virtual Machine 2)的推出,该模型得到了进一步优化。 **2.2 可变跑道的工作原理** - **代码执行阶段**:在每一帧的开始,FlashPlayer会...
1. **增强的 ActionScript 虚拟机 (AVM2)** - **AVM2** 提供了一个全新的字节码指令集,显著提高了代码执行的速度和效率。 - 这意味着开发者可以利用更复杂的算法而不必担心性能下降。 2. **严格的编译器代码库**...
在AS3中,所有代码执行都在一个单线程环境中,这被称为AVM2(ActionScript Virtual Machine 2)。单线程意味着在同一时间只能执行一个任务,这可能导致在处理耗时操作时出现画面冻结或响应迟钝的问题。为了克服这些...
ActionScript 3.0还使用了AVM2,即Adobe虚拟机的第二代版本,它在性能和安全性方面相比于旧版有了显著提升。ActionScript代码通常被编译成SWF文件,这是ShockWave Flash的文件格式,用于在Flash Player中执行。 ...
1. Creative Commons BY-ND-NC Foreword: Beta 0.16 Preface 1. How to Use this Book 2. Your Feedback 3. Font Conventions 4. Maven Writing Conventions 5. Acknowledgements 1. 介绍 Apache Maven ...