-

AS3的Base64编码和解码

Posted by wpm on Aug 26, 2011 in ActionScript, Articles, Flash, Tutorials

as3的Base64编解码

Tags: ,

 
3

利用flash.system.Capabilities来检测,Capabilities提供一些属性,这些属性描述了承载 SWF 文件的系统和播放器的特征,

Posted by wpm on Aug 10, 2010 in ActionScript, Articles, Flash, Flex, Tutorials

通过使用Capabilities对象来确定用户所拥有的设备的类型,如果熟悉设备的功能,则可以通知服务器发送合适的 SWF 文件,或是通知 SWF 文件变更其播放方式,从而获得良好的效果。言归正传,下面是一段代码,用来实现获取flashplayer版本信息: var versionString:String = Capabilities.version; var pattern:RegExp = /^(\w*) (\d*),(\d*),(\d*),(\d*)$/; var result:Object = pattern.exec(versionString); if (result != null) { trace(“input: ” + result.input); trace(“platform: ” + result[1]); trace(“majorVersion: ” + result[2]); trace(“minorVersion: ” + result[3]); trace(“buildNumber: ” + result[4]); trace(“internalBuildNumber: ” + result[5]); } 其中的plarform为播放器运行平台,其中的可能值是WIN、MAC以及UNIX. 其中的majorVersion为主版本号,minorVersion为次版本号,buildNumber为生成版本号,internalBuildNumber为内部生成版本号。 例如一个完整的版本信息可能是WIN 9,0,0,0,是一个win平台上运行的9.0版本的flashplayer。

Tags: , ,

 
4

IE6+gzip+flash+(no-cache) == nightmare

Posted by wpm on Apr 27, 2010 in Uncategorized

继上次祈福活动之后,公益活动再次出现在IE6用flash取后台数据,gzip压一下,然后response头里cache control设了no-cache肯定flash里显示不成功,抓包也没问题,返回的数据都是正确的,到了flash里就异常。而且很诡异的是不是所有的IE6都出问题。 解决的办法也很诡异有两种思路: 1.去gzip压缩,nginx里面可以配置对某一特定浏览器版本禁用gzip压缩。 2.设置 Cache-control: max-age=1或更小的值,反正不能用 Cache-control:no-cache,加个response头 Expires: 1970.1.1。 具体原因还要继续研究,可以肯定的是服务器能正常处理,但是在IE6下flash无法接受到服务器返回的信息。

Tags: , , , , ,

 
-

将编译AS3区分Debug版本和Release版本(转)

Posted by wpm on Apr 25, 2010 in ActionScript, Flash, Flex, Uncategorized

原文链接:http://www.xiaos8.com/article.asp?id=556 首先我们区分AS3的编译版本,目的是让同样的code,如果使用debug编译,则会含有很多测试代码方便调试;如果使用release编译,则不会将调试代码编译进去。 用过Visual Studio(以下简称VS)的程序员都知道,VS在编译时有个debug和release的选项,而flash builder(以下简称fb)在编译时,虽然可以选择不同路径编译,但无法像VS那样真正的区分编译版本。 下面我依然要说,fb的确没办法像VS那样真正的去区分版本进行编译,但fb可以条件编译! 什么是条件编译 一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”。 接下来看看,我们怎么样使用条件编译来完成区分编译Debug版本和Release版本: 1、首先来看一段代码: [cc lang="actionscript"] package { import flash.display.Sprite; public class TestBuild extends Sprite { CONFIG::debug public function TestBuild() { graphics.beginFill(0xff0000,1); graphics.drawRect(0,0,100,100); } CONFIG::release public function TestBuild() { graphics.beginFill(0x0000ff,1); graphics.drawRect(0,0,100,100); } } } [/cc] 2、TestBuild有两个构造函数,不同的是一个构造函数上有CONFIG::debug,一个有CONFIG::release; 通过理解,如果是debug编译画出来的是红色的正方形,而release编译是蓝色正方形。 3、然后我们使用mxmlc命令行对这段代码进行debug编译 mxmlc src/TestBuild.as -define=CONFIG::debug,true -define=CONFIG::release,false -output bin-release/TestBuild.swf 4、得到一个swf文件,打开一看是红色正方形,的确是debug版本编译 点击播放/隐藏媒体 uploads/201004/19_115454_testbuild.swf 5、然后改一下编译参数,进行release编译 mxmlc [...]

Tags: , , , , , , , , , , , ,

 
-

as3-rpclib

Posted by wpm on Jun 18, 2009 in Framework

AS3来执行远程调用的开源库。

支持和即将支持的协议:

项目地址:http://code.google.com/p/as3-rpclib/

直接下载:http://as3-rpclib.googlecode.com/files/as3-rpclibv0.5.zip

Tags: , , , , ,

 
-

flash 安全问题

Posted by wpm on Jun 5, 2009 in Articles

js 与 swf 通讯涉及到的安全沙箱问题: js页面端 如果使用的是swfLoader,则加 flash_var.addParam(“AllowScriptAccess”,”always”); flash_var.addParam(“allowNetworking “,”all”); 例如: <script language=”JavaScript”> var flash_var = new SWFObject(“name.swf”, “flash”, 545, 633, “9″, “”); flash_var.addParam(“AllowScriptAccess”,”always”); flash_var.addParam(“allowNetworking “,”all”); flash_var.write(“flash_wrap”); </script> 如果使用的是object标签,则可以加 <object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0″ width=”545″ height=”633″ title=”feipan”> <param name=”movie” value=”name.swf” /> <param name=”quality” value=”high” /> <param name=”AllowScriptAccess” value=”always” /> <param name=”allowNetworking ” value=”all” /> <embed src=”name.swf” quality=”high” pluginspage=”http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash” [...]

Tags: , , , ,

 
-

flash 事件流 与 元件层次 的关系

Posted by wpm on Mar 16, 2009 in ActionScript

flash 事件流
包括3个过程:查找,目标和冒泡 3个过程,
他是从最底层的displayobj开始搜寻,类似与树状结构搜寻,displaycontainer 中查找这些元件.以前有时会遇到事件的触发问题,例如事件被吃掉,事件被多个元件触发.这里需要注意下安排他们的层次 例如要监听的对象和无关的不想被触发的对象保持兄弟接点的层次关系. 要想都触发保持父子的节点关系.

Tags: , ,

 
1

as3 事件机制

Posted by wpm on Mar 15, 2009 in ActionScript

以前的事件处理模型:

on() 在 Button 或 MovieClip上的 
onClipEvent() 直接写在 MovieClip instances 上的
Callback 函数 例如XML.onload 和 Camera.onActivity 
addListener()方法 简单的事件监听
The UIEventDispatcher class 实现了部分 DOM event model.

as3有什么不同:

全部废除,只有addEventListener()一种了
listener只可以是methods或function,而且自带了Delegate(好多资料里都有写,这点就不讨论了)
多了event flow概念,就是说as2中只有广播者才能addEventListener,as3中即使object不发广播,只要它在event flow中都可以 addeventlistener

event flow:

事件源如果不在displaylist中,那么跟as2一样只能 事件源.addEventListner(“xxx” xxxfunc)

否则如果事件源是可视的,那么Flashplayer会把这个event object扔到事件源所处的displaylist中去

displaylist 是一个树型结构,可以想象为下图

,然后这个eventObject会自己旅游到事件源那去,然后再回来

event flow 就是描述eventObject在这个displaylist中的旅游过程

顶端是一个特殊的display object容器—- Stage,他表现在flash.display.Stage类中,然后每一个display object都有一个属性叫stage 都引用这个应用程序的Stage

event flow 概念上被分为3部分。

第一部分叫 capture 阶段 包括从Stage到目标的parent
第2 部分叫 target 阶段 就只有目标节点
地3 部分叫 bubbling 阶段 包括从目标的parent到Stage

如图:

前边说过如果事件源不在displaylist中,那么跟as2一样只能 事件源.addEventListner(“xxx” xxxfunc) 因为它就只参加 target阶段,1,3阶段都不参与
一些特殊的事件也是这样,例如enterFrame 和 init

否则该eventObject将参与这3个阶段

但在一般情况下,默认的addEventListener只监听event flow第 2,3阶段。

看个鼠标点击的例子 (点此下载)

Tags: , , ,

 
3

XMLRPC for Actionscript 3.0 – Free Library

Posted by wpm on Mar 7, 2009 in Framework


http://danielmclaren.net/2007/08/03/xmlrpc-for-actionscript-30-free-library

Download XMLRPC for AS3


And without further ado, here are the source files:

Some notes:

Tags: , , ,

 
3

ActionScript3 内存管理

Posted by wpm on Mar 7, 2009 in ActionScript


AS3内存管理(垃圾回收 Garbage Collector) 【抄文】


Tags: , , ,