<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dansion&#039;s 日志 &#187; Flash ActionScript</title>
	<atom:link href="http://www.dansion.com/blog/category/actionscript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.dansion.com/blog</link>
	<description>学无止境～～～～～～～</description>
	<lastBuildDate>Thu, 29 Sep 2011 09:25:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>js与flash交互</title>
		<link>http://www.dansion.com/blog/javascript/js-flash-as.html</link>
		<comments>http://www.dansion.com/blog/javascript/js-flash-as.html#comments</comments>
		<pubDate>Sat, 06 Feb 2010 09:03:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/?p=902</guid>
		<description><![CDATA[在html页面里js调用swf里的方法，以及swf调用js函数。
在as中：

ExternalInterface.call("js函数名“,参数1,参数2,....);//flash调用js
ExternalInterface.addCallback("js函数名", as对应方法);//添加js对应的回调函数。

在html中：
关健是要先获取dom里的flash节点对象.假定为swfobj,
js调用方法为：swfobj.方法名(参数1,参数2);
例如：
as中：

ExternalInterface.addCallback("play", jsplay)
function jsplay(a,b,c){
//do someting
}

则js中可为:
swfobj.play(&#8221;a&#8221;,&#8221;b&#8221;,&#8221;c&#8221;);
js调用时需要对object,embed中的AllowScriptAccess做设定，默认值是: sameDomain,如果跨域的需要设为always，还要对其as中的Security.allowDomain进行设定，图方便可直接设为 Security.allowDomain(*);
补充一个比较杯具的问题：
除纯正的IE之外所有IE内核的浏览器，例如：傲游，TT，世界之窗等等，在js调用flash时会出现安全沙箱的问题。貌似是AllowScriptAccess无效了，其真正原因是因为这些外壳浏览器的缓存机制的问题。比较恶心的作法是针对IE内核的浏览器在引用swf文件时，在其URL地后增加一个随机变量。通过动态改变URL方式清除缓存。本来还以为是这些浏览器有问题，后来细想一下，还是adobe的问题。
jquery+swfobject代码：

var r=$.browser.msie?"?"+Math.random():"";
swfobject.embedSWF("main.swf"+r, "slides", "500", "260", "9.0.0","",
{}, {"AllowScriptAccess":"always"}, {"id":"flash_map","name":"flash_map"});

]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/javascript/js-flash-as.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FLASH Loader 的 bug?</title>
		<link>http://www.dansion.com/blog/fromflash/flash-loader-bug.html</link>
		<comments>http://www.dansion.com/blog/fromflash/flash-loader-bug.html#comments</comments>
		<pubDate>Mon, 19 Oct 2009 12:46:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FLASH心得]]></category>
		<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[loader]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/?p=904</guid>
		<description><![CDATA[手头有一个小的flash程序，一个图片的加载器。而开发阶段，Loader去加载一张2562*1602的图片，又把loader缩小到50*50的宽度.再把loader定位到stage的右下角。
好！问题来了，当是stage的长宽变大时，Loader内的图片x,y坐标会有一个限值。当图片越大，该loader内的图片的限值x,y坐标越小。
 按照片我上述情况,Loader内的img坐标最大值不能超过640.
也就是说：用一个loader去加载一张2562*1602的图片，同时把loader长度定位为50*50,loader的坐标不能超过640。尝试过好几个图片尺寸，但没有找出规律。
图片在1280宽度左台，貌似loader最大x坐标是：x=1280*2-img.width
swf:查看例子,要拖动浏览器的窗口大小。
fla:http://www.dansion.com/works/loaderbug/main.fla
img:http://www.dansion.com/works/loaderbug/img.jpg
以下代码：main.as

package{
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
public class main extends Sprite{
private var ldr:Loader;
public function main(){
init();
}
private function init():void{
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE, resizeHandler);
ldr=new Loader();
var url:URLRequest = new URLRequest("img.jpg");
 
ldr.load(url);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,ldrCompleteHand);
this.addChild(ldr);
 
 }
private function ldrCompleteHand(e:Event){
e.target.loader.height=50;
e.target.loader.width=50;
relayout();
}
private function resizeHandler(e:Event) {
relayout();
}
private function relayout(){
ldr.x=stage.stageWidth-ldr.width;
ldr.y=stage.stageHeight-ldr.height;
}
}
}

]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/fromflash/flash-loader-bug.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>as闭包，addEventListener传参数.</title>
		<link>http://www.dansion.com/blog/actionscript/as-closure-addeventlistener.html</link>
		<comments>http://www.dansion.com/blog/actionscript/as-closure-addeventlistener.html#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:48:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[as]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/?p=796</guid>
		<description><![CDATA[闭包，很强大。as通用闭包方法给addEventListener传参数。
var arg=0;
a.addEventListener(MouseEvent.CLICK,clickfunc(arg));
function clickfunc(arg):Function{
var func=function(e):void{
trace(arg);
trace(e);
}
return func;
}
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/actionscript/as-closure-addeventlistener.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flash cs3应用google map api</title>
		<link>http://www.dansion.com/blog/actionscript/google-map-api-for-flash-cs.html</link>
		<comments>http://www.dansion.com/blog/actionscript/google-map-api-for-flash-cs.html#comments</comments>
		<pubDate>Sun, 17 Aug 2008 08:00:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/archives/51</guid>
		<description><![CDATA[google今年5月发布了google map api for flash,
但下载了google官方的SDK,只是提供了flex下的组件,并没有针对flash cs3下开发的api.

Google Maps API for Flash地址:http://code.google.com/apis/maps/documentation/flash/
在网上搜寻了许久,在google讨论组上一个叫Vincent的伙计提供了flash cs3下的组件.
讨论贴:http://groups.google.com/group/google-maps-api-for-flash/browse_thread/thread/e5f22256a61a9f05#
下载地址:http://groups.google.com/group/google-maps-api-for-flash/files
下载是map_flash_1_5.zip的压缩文件,把文件名改为map_flash_1_5.swc,再把文件放到
C:Documents and Settings用户名Local SettingsApplication DataAdobeFlash CS3语言ConfigurationComponents
语言:中文版是zh_cn,英文版:en
还有一个例子:http://code.google.com/p/gmaps-api-issues/issues/detail?id=329#c28
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/actionscript/google-map-api-for-flash-cs.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>flash datagrid组件单元格12号中文字体设置</title>
		<link>http://www.dansion.com/blog/actionscript/flash-datagrid-font12.html</link>
		<comments>http://www.dansion.com/blog/actionscript/flash-datagrid-font12.html#comments</comments>
		<pubDate>Mon, 23 Jun 2008 17:34:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/archives/50</guid>
		<description><![CDATA[flash datagrid组件的列表字号默认不是12号字,好像是10号字,显示中文很不好看.
以下利用继承CellRenderer类方法简单设置datagrid的字体,字号及颜色.
CellRenderer 类很好几种用法,flash帮助文档有详细说明.

编写cellStyle.as 文件
package{
import fl.controls.listClasses.CellRenderer;
import fl.controls.listClasses.ICellRenderer;
import flash.text.TextFormat;
//常规
public class cellStyle extends CellRenderer implements ICellRenderer {
   public function cellStyle():void {
    super();
   }
   override protected function drawBackground():void {
    var format:TextFormat = new TextFormat();
    format.color=0xffffff;
    format.size=12;
    format.font=&#8221;宋体&#8221;;
    setStyle(&#8221;textFormat&#8221;,format);
    super.drawBackground();
   }
}
}
 
DG.setStyle(&#8221;cellRenderer&#8221;,cellStyle);
DG是实例化的DataGrid类.
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/actionscript/flash-datagrid-font12.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FLash中escape()出问题</title>
		<link>http://www.dansion.com/blog/actionscript/flashescape.html</link>
		<comments>http://www.dansion.com/blog/actionscript/flashescape.html#comments</comments>
		<pubDate>Tue, 08 Jan 2008 11:01:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/archives/29</guid>
		<description><![CDATA[利用escape&#160;()&#160;转化中文的URL地址，但转成的结果并非是正确的结果。查来查去，最后发现是AS3.0的escape()和AS2.0的escape()有着不同的功能。AS3.0用escapeMultiByte&#160;()的功用才和AS2.0一样。
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/actionscript/flashescape.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash中ExternalInterface.call返回null值</title>
		<link>http://www.dansion.com/blog/actionscript/flash-externalinterface.html</link>
		<comments>http://www.dansion.com/blog/actionscript/flash-externalinterface.html#comments</comments>
		<pubDate>Sun, 30 Dec 2007 17:41:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/archives/28</guid>
		<description><![CDATA[利用ExternalInterface.call调用html里的js函数,参照了flash帮助文档里的做法.可以执行js的函数.但就是无法获取return的值.网上一大堆教程也只是抄flash帮助文档的东西.也试了allowScriptAccess=always.结果无效,最后让我去搜了N个flash网站,答案居然是只要给&#60;object&#62;加上一个id或是name就解决了.哎&#8230;&#8230;.无语了注(IE7.0)
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/actionscript/flash-externalinterface.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>FLash子类继承父类的带参数的构造函数</title>
		<link>http://www.dansion.com/blog/actionscript/flash-subclass-extends.html</link>
		<comments>http://www.dansion.com/blog/actionscript/flash-subclass-extends.html#comments</comments>
		<pubDate>Sun, 13 May 2007 17:20:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/archives/15</guid>
		<description><![CDATA[想给FLASH的Date类增加一些农历的数据.当然是继承Date再增加一些方法啦.但在做的过程发现在以前从没有碰到过的问题.农历的数据是从公历数据换算过来的.而Date类在实例过程中有好几中方式.怎么样继承父类的构造函数,在flash帮助文档中&#34;重写方法和属性&#34;中得到结果结论:Widget.as类文件
class&#160;Widget&#160;{&#160;&#160;&#160;&#160;public&#160;static&#160;var&#160;widgetCount:Number&#160;=&#160;0;&#160;&#160;&#160;&#160;public&#160;function&#160;Widget()&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Widget.widgetCount++;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;public&#160;function&#160;doSomething():Void&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;Widget::doSomething()&#34;);&#160;&#160;&#160;&#160;}}
SubWidget.as类文件
class&#160;SubWidget&#160;extends&#160;Widget&#160;{&#160;&#160;&#160;&#160;public&#160;function&#160;SubWidget()&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;Creating&#160;subwidget&#160;#&#160;&#34;&#160;+&#160;Widget.widgetCount);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;doSomething();&#160;&#160;&#160;&#160;}}
在新建的flash文档中
var&#160;sw1:SubWidget&#160;=&#160;new&#160;SubWidget();var&#160;sw2:SubWidget&#160;=&#160;new&#160;SubWidget();
输出结果:
Creating&#160;subwidget&#160;#&#160;1Widget::doSomething()Creating&#160;subwidget&#160;#&#160;2Widget::doSomething()
结论是子类继承父类,也继承了父类的构造函数.但是Date类构建函数是带参数,而且还是有多种方式.最后,终于在flash帮助文档中找到了super条目.以前一直没有注意.以前做的东西也很少有这样父类,子类,爷类的.super用法:
super.method([arg1,&#160;...,&#160;argN])super([arg1,&#160;...,&#160;argN])
第一种语法格式可以在对象方法体内使用，用于调用方法的超类版本，而且可以选择向超类方法传递参数&#160;(arg1&#160;&#8230;&#160;argN)。这对于创建某些子类方法很有用，这些子类方法在向超类方法添加附加行为的同时，又调用这些超类方法执行其原始行为。第二种语法格式可以用于构造函数体内，用以调用此构造函数的超类版本，而且可以选择向它传递参数。这对于创建子类很有用，该子类在执行附加的初始化的同时，又调用超类构造函数执行超类初始化。我的农历date类&#160;LunarCalendar.as,其实的参数完全和date类的参数一样.
class&#160;LunarCalendar&#160;extends&#160;Date&#160;{&#160;public&#160;function&#160;LunarCalendar(yearOrTimevalue:Number,&#160;month:Number,&#160;date:Number,&#160;hour:Number,&#160;minute:Number,&#160;second:Number,&#160;millisecond:Number)&#160;{&#160;&#160;super(yearOrTimevalue,&#160;month,&#160;date,&#160;hour,&#160;minute,&#160;second,&#160;millisecond);&#160;}}
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/actionscript/flash-subclass-extends.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

