﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java &amp;&amp; Flex-文章分类-&lt;/B&gt;AS2.0&lt;/B&gt;</title><link>http://www.blogjava.net/sl2cj/category/10605.html</link><description>&lt;br&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp----&gt;乞怪猪blog搬家了--[www.ialway.com/blog]--希望继续关注!谢谢!^0^</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:39:41 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:39:41 GMT</pubDate><ttl>60</ttl><item><title> Flash弹出窗口 </title><link>http://www.blogjava.net/sl2cj/articles/74939.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Fri, 13 Oct 2006 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/74939.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/74939.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/74939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/74939.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/74939.html</trackback:ping><description><![CDATA[
		<font size="2">在网页中弹出窗口可以通过JS或onclick或onload调用window.open()的方法来实现，如<br /></font>
		<div class="code">
				<font size="2">window.open ('xhlv.htm','', 'height=100, width=100, top=100, left=100, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=yes')</font>
		</div>
		<br />
		<font size="2">而flash中同样可以通过类似的方法来实现，<br />虽然在flash中也可以直接使用window.open()来弹出窗口，<br /></font>
		<div class="code">
				<font size="2">getURL("javascript:window.open('pic_big.php','','toolbar=no,scrollbars=yes,resizable=yes')");</font>
		</div>
		<br />
		<font size="2">但是主窗口会有一个object小错误。<br /><br />最合适的方法是flash与html代码相结合：<br />1.在网页中加入JS<br /></font>
		<div class="code">
				<font size="2">function openWindow(theURL,winName,features) { //v2.0<br /> window.open(theURL,winName,features);}</font>
		</div>
		<br />
		<font size="2">2.在flash中调用已定义的openWindow()，注意<span style="COLOR: #ff0000">不是window.open()</span><br /></font>
		<div class="code">
				<font size="2">getURL("javascript:openWindow('pic_big.php','','toolbar=no,scrollbars=yes,resizable=yes')");</font>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/74939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-13 11:10 <a href="http://www.blogjava.net/sl2cj/articles/74939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash Video播放器Skin无法正常显示的问题：</title><link>http://www.blogjava.net/sl2cj/articles/73782.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 08 Oct 2006 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/73782.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/73782.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/73782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/73782.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/73782.html</trackback:ping><description><![CDATA[
		<p>Flash Video播放器Skin无法正常显示的问题：</p>
		<p>如果有人做Flash Video，用FLV文件的话，而且在用的同时，还选用了FLASH 8 自带的一些player skin。那么在基本情况下，skin会生成一个swf与其它文件同级，此时必须保证主文件SWF，FLV，播放器skin的swf文件，以及最终显示的 html在同一级下显示，才能让所有东西都显示出来。如果建一个这样的目录结构<br />show.html<br />swf/ClearOverAll.swf<br />swf ideo.swf<br />swf ideo.flv<br />去观看show.html的话，视频虽然能正式播放，但播放器skin就没办法加载了，解决办法是在Flash 8 中，给FLVPlayback命一个名字，如my_FLVPlybk，然后在第一帧写上：<br />my_FLVPlybk.skin = “swf/ClearOverAll.swf”;<br />再重新生成文件，就好了。也就是说在flash中要指明skin文件的路径</p>
<img src ="http://www.blogjava.net/sl2cj/aggbug/73782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-08 13:58 <a href="http://www.blogjava.net/sl2cj/articles/73782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从AsBroadcaster到EventDispatcher</title><link>http://www.blogjava.net/sl2cj/articles/73734.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sun, 08 Oct 2006 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/73734.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/73734.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/73734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/73734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/73734.html</trackback:ping><description><![CDATA[
		<div class="textbox-title">
				<h4>
						<font size="2">从AsBroadcaster到EventDispatcher(上) [作者：wiyiflash]</font>
				</h4>
				<div class="textbox-label">
						<font size="2">[ 2005-07-29 01:16:12 | 发布: </font>
						<a href="http://www.nshen.net/blog/user.asp?act=view&amp;id=2">
								<font size="2">N神</font>
						</a>
						<font size="2"> ] </font>
				</div>
		</div>
		<div class="textbox-fontsize">
				<font size="2">字体大小: </font>
				<a title="字体大小: 大" href="javascript:setFontSize(14)">
						<font size="2">大</font>
				</a>
				<font size="2"> | </font>
				<a title="字体大小: 中" href="javascript:setFontSize(11)">
						<font size="2">中</font>
				</a>
				<font size="2"> | </font>
				<a title="字体大小: 小" href="javascript:setFontSize(9)">
						<font size="2">小</font>
				</a>
				<font size="2">
				</font>
		</div>
		<div class="textbox-content" id="textboxContent">
				<font size="2">前言:论坛里关于AsBroadcaster(广播)类的讨论很多，有很多精妙的讲述，但为了和EventDispatcher(派遣)类有个比较，不得不把这位"老兄"拉来客串一下。对它我不会讲的很详细，不解的地方可以去搜搜前辈的帖子哦。<br /><br />AsBroadcaster(广播)类在MX(flash6)里写做"ASBroadcaster",这是为什么有时会发生以前的程序在2004版里发生异常的原因之一。AsBroadcaster 类具有四个静态的方法:<br />------------------------------------------------------------------------------<br />static function initialize(o:Object);<br />//o:对象<br />//initialize:初始化方法，为对象o附加上作为事件源的各项功能。那么事件源都有什么功能呢？<br />static function broadcastMessage(msg:String);<br />//msg:消息<br />//broadcastMessage:广播方法，事件源的一个主要功能就是向外界广播一条消息，告知听广播的人"某一事件发生啦!"<br />static function addListener(o:Object);<br />//o:对象<br />//addListener:注册监听者方法，也就是决定广播消息给谁听的意思<br />static function removeListener(o：Object);<br />//o:对象<br />//removeListener:注销监听者方法，也就是消息不再广播给谁听<br />--------------------------------------------------------------------------------<br />如此看来AsBroadcaster类也不怎么复杂嘛，下面看看它的具体使用吧!<br /><br />-----AsBroadcaster测试.fla 开始------<br />import mx.events.AsBroadcaster;<br />//mx.events.AsBroadcaster:AsBroadcaster类的完整路径,这里用'import'关键字将它导入，以后就可以直接用'AsBroadcaster'来引用它。<br />var 司令部=new Object();<br />//啊，司令部是个发布指挥消息的地方，用它做事件源是个不错的选择<br />AsBroadcaster.initialize(司令部);<br />//这里直接用AsBroadcaster来引用mx.events.AsBroadcaster类,原因如上述<br />//调用AsBroadcaster类的静态方法initialize,为司令部附加上作为事件源的各项功能<br />var 步兵=new Object();<br />//生成步兵对象<br />步兵.on进攻=function(){<br />//on进攻: 这里之所以用'on'做前缀，是为了表明这个方法是响应一定事件的方法<br />trace("步兵接到司令部来电，轻装上阵，火速向敌方阵地前进!");<br />// 接到'on进攻'消息后采取的措施<br />}<br />步兵.on驻守=function(){<br />//同上<br />trace("步兵接到司令部来电，就地待命，多设岗哨,严防来犯之敌!");<br />}<br />司令部.addListener(步兵);<br />//将步兵添加为司令部的监听者，从现在起他将听从司令部的指令行事<br />//以下雷同的地方，恕不赘述<br />var 装甲兵=new Object();<br />装甲兵.on进攻=function(){<br />trace("装甲兵接到司令部来电，加足马力，火速向敌方阵地开进!");<br />}<br />装甲兵.on驻守=function(){<br />trace("装甲兵接到司令部来电，就地待命，检修装甲,作好随时进攻的准备!");<br />}<br />司令部.addListener(装甲兵);<br />var 炮兵=new Object();<br />炮兵.on进攻=function(){<br />trace("炮兵接到司令部来电，向敌方阵地猛烈轰击!");<br />}<br />炮兵.on驻守=function(){<br />trace("炮兵接到司令部来电，就地待命，保证弹药准备充足!");<br />}<br />司令部.addListener(炮兵);<br />//-------------------下面开始演示------------------------------------<br />trace("司令部一号指示");<br />司令部.broadcastMessage("on进攻");<br />//司令部用'broadcastMessage' 方法广播'on进攻'指令<br />trace("司令部二号指示");<br />司令部.removeListener(步兵);<br />//"将在外，君令有所不授"，司令部用'removeListener'方法注销了'步兵'听从指令的义务<br />司令部.broadcastMessage("on驻守");<br />//司令部用'broadcastMessage' 方法广播'on驻守'指令。注意:步兵现在不会驻守哦<br />-----AsBroadcaster测试.fla 结束-----<br /><br />具体的测试结果，大家试试便知。现在我们看看AsBroadcaster类的局限所在:<br />1、如果司令部发出的指令是"向一号高地进攻"，这个消息应该怎么广播呢?<br />我们当然可以为步兵定义一个'on向一号高地进攻'的方法,然后监听司令部广播的'on向一号高地进攻'的消息。可是如果需要发出N个'向某高地进攻'的指令，岂不是要定义N个类似的事件方法？如果进攻的目标是随即确定的，那又该怎么去写?如果步兵同时监听"战地指挥部"的广播，他怎样根据不同的指挥者采取不同的措施？步兵并不能确定一个'on进攻'消息是来自司令部还是'战地指挥部'呀。所以说，AsBroadcaster类的第一个局限就是它虽然广播了一个'消息'，却不能给出消息的具体说明。<br />2、我们知道战争时期为了做到策略的"因时因地制宜"，常常会设一个"战地指挥部"。假设我们希望把步兵的进攻的指挥权交给"战地指挥部"，而把步兵的驻守权交给"司令部"。因为司令部同时拥有装甲兵和炮兵的进攻与驻守的指挥权，所以它可以广播"on进攻"消息,但一件意想不到事将会发生:步兵也跟着进攻了!<br />为了防止出现差错，司令部就不得不在进攻前"removeListener(步兵)"。但为了防止广播 "on驻守"消息时步兵不再驻守，所以在广播完"on进攻"消息后必须再次"addListener(步兵)"。司令部何其累哉!所以说，AsBroadcaster类的第二个局限就是它注册了一个监听者，却并不关心监听者到底是监听它的什么事件。<br />3、AsBroadcaster类的第三个局限其实是由第二个局限来的，就是它有些情况下会造成运行的低效。假设还有一支空军, 它有"on空袭"事件方法,并且归司令部指挥。当司令部广播"on空袭"消息时，得，步兵、装甲兵和炮兵就会也试图执行"on空袭"事件方法，当然是浪费时间啦.<br /><br />说了AsBroadcaster类这么多局限的地方，并不是说AsBroadcaster类不好，而是说要根据情况选择使用不同的事件机制。如果不涉及到上面说的几种情况，用AsBroadcaster类其实很方便的(比EventDispatcher类要省事)。也正因为AsBroadcaster类有这么多局限的地方，才使我们的主角EventDispatcher类等上了光辉的舞台，请看我们下篇的讲述吧!<br />------------------------------------------------------------------------<br />补充1:<br />AsBroadcaster.initialize(o)方法会为o创建一个"_listener"数组，它用来存储所有的监听者对象。<br />补充2:<br />FlashMX 2004里还有个mx.transitions.BroadcasterMX类，它比mx.events.AsBroadcaster的功能要强大，支持广播消息时附带更多的参数，可以对消息进行更多描述。感兴趣的朋友可以访问我的论坛</font>
				<a title="http://www.wiyiflash.com/bbs" href="http://www.wiyiflash.com/bbs" target="_blank">
						<font size="2">http://www.wiyiflash.com/bbs</font>
				</a>
				<font size="2"> 里的特别教程。<br /><br />转贴请注明:[维艺--Flash]原创作品 ,谢谢!<br /><br /><br /><div class="textbox"><div class="textbox-title"><h4>从AsBroadcaster到EventDispatcher(下) [作者：wiyiflash]</h4><div class="textbox-label">[ 2005-07-29 01:19:42 | 发布: <a href="http://www.nshen.net/blog/user.asp?act=view&amp;id=2"><font color="#002c99">N神</font></a> ] </div></div><div class="textbox-fontsize">字体大小: <a title="字体大小: 大" href="javascript:setFontSize(14)"><font color="#002c99">大</font></a> | <a title="字体大小: 中" href="javascript:setFontSize(11)"><font color="#002c99">中</font></a> | <a title="字体大小: 小" href="javascript:setFontSize(9)"><font color="#002c99">小</font></a></div><div class="textbox-content" id="textboxContent">在上篇中我们提到了AsBroadcaster类包装的广播器作为事件源的诸多限制，现在就看看EventDispatcher(派遣)类是如何拓展事件源的功能吧。<br />EventDispatcher类有2个静态方法:<br />----------------------------------------------<br />static function initialize(object:Object):Void<br />//object:对象<br />//initialize:初始化方法，为对象object附加上作为事件源(在这里可以理解为派遣中心吧)的各项功能。<br />static function _removeEventListener(queue:Object, event:String, handler):Void<br />//一个内部方法,注销监听事件源相关事件的监听者<br />-------------------------------------------------<br />EventDispatcher类有4个公共方法:<br />function dispatchEvent(eventObj:Object):Void<br />/*事件派遣方法，向外界广播一个消息，并附有关于消息的相关描述(请与broadcastMessage(msg:String)方法比较)<br />eventObj:事件对象，它至少应含有2个属性,假设司令部为一个事件派遣中心，一般定义如下:<br />var eventObj=new Object();<br />eventObj.target=司令部;//定义广播消息的对象<br />eventObj.type="on进攻";//定义消息的具体类型<br /><br />其中target属性也可以不定义，dispatchEvent方法会将它设为默认的广播消息的对象。<br />*/<br />function dispatchQueue(queueObj:Object, eventObj:Object):Void<br />/*这个方法的中文意思，我根据它的功能将它称为"事件传达"。<br />queueObj:一个事件派遣中心对象<br />eventObj:事件对象,注意:与 dispatchEvent不同，它的target并无默认值，需要你手工设定.<br />为什么将这个方法称为事件传达呢?因为它可以让当前的事件派遣中心指示另一个事件派遣中心(方法的第一个参数)向外界广播消息。其实在dispatchEvent方法的内部就调用了dispatchQueue，只是将参数queueObj设为当前的事件派遣中心罢了。<br />*/<br />function addEventListener(event:String, handler):Void<br />/*注册某个事件的监听者<br />event:监听的事件名称<br />handler:监听事件的对象<br />这个方法与AsBroadcaster类的addListener方法相比，多出了参数event，<br />明确了所监听的具体事件。<br />*/<br />function removeEventListener(event:String, handler)<br />/*注销某个事件的监听者<br />event:事件名称<br />handler:要注销的监听事件的对象<br />这个方法与AsBroadcaster类的removeListener方法相比，多出了参数event，明确了从哪个事件中注销监听对象。<br />*/<br />----------------------------------------------------------<br />下面就让我们在战场上实战一下EventDispatcher吧。假设有两个指挥中心，一个是司令部，一个是战地指挥部。有三个兵种，分别是炮兵、步兵和敢死队。司令部可以指挥炮兵的进攻、驻守和步兵的驻守，战地指挥部可以指挥步兵的进攻、冲锋和敢死队的冲锋，并且司令部可以向战地指挥部传达指示。下面是实现上述复杂关系的代码:<br />-----EventDispatcher测试.fla 开始-----<br />import mx.events.EventDispatcher;<br />//导入 mx.events.EventDispatcher类<br />var 司令部 = new Object();<br />司令部.名称 = "司令部";<br />EventDispatcher.initialize(司令部);<br />//为司令部对象附加上派遣中心的相关功能。<br />var 战地指挥部 = new Object();<br />战地指挥部.名称="战地指挥部";<br />EventDispatcher.initialize(战地指挥部);<br />//为战地指挥部对象附加上派遣中心的相关功能。<br /><br />var 步兵 = new Object();<br />步兵.on进攻 = function(eventObj) {<br />　　　　　//步兵的'on进攻'事件处理方法，记住需要有参数<br />var 来自=eventObj.target.名称;<br />　　　　　//eventObj.target引用广播'on进攻'事件的对象，用它可以访问事件源并反馈消息。<br />var 阵地=eventObj.阵地;<br />　　　　　 //获取事件的关于' 阵地'属性值<br />trace("步兵接到"+来自+"来电，轻装上阵，火速向敌方"+阵地+"前进!");<br />};<br />步兵.on驻守 = function(eventObj) {<br />var 来自=eventObj.target.名称;<br />trace("步兵接到"+来自+"来电，就地待命，多设岗哨,严防来犯之敌!");<br />};<br />步兵.on冲锋=function(eventObj){<br />var 来自=eventObj.target.名称;<br />var 阵地=eventObj.阵地;<br />trace("步兵接到"+来自+"来电，向敌方"+阵地+"发起冲锋!");<br /><br />}<br />司令部.addEventListener("on驻守", 步兵);<br />//向司令部的'on驻守'事件注册监听对象'步兵'<br />战地指挥部.addEventListener("on进攻", 步兵);<br />//向司令部的'on进攻'事件注册监听对象'步兵'<br />战地指挥部.addEventListener("on冲锋",步兵);<br />//向战地指挥部的'on冲锋'事件注册监听对象'步兵'<br />var 炮兵 = new Object();<br />炮兵.on进攻 = function(eventObj) {<br />var 来自=eventObj.target.名称;<br />var 阵地=eventObj.阵地;<br />trace("炮兵接到"+来自+"来电，向敌方"+阵地+"阵地猛烈轰击!");<br />};<br />炮兵.on驻守 = function(eventObj) {<br />var 来自=eventObj.target.名称;<br />trace("炮兵接到"+来自+"来电，就地待命，保证弹药准备充足!");<br />};<br />司令部.addEventListener("on驻守", 炮兵);<br />司令部.addEventListener("on进攻", 炮兵);<br />var 敢死队=new Object();<br />敢死队.on冲锋=function(eventObj){<br />var 来自=eventObj.target.名称;<br />var 阵地=eventObj.阵地;<br />trace("敢死队接到"+来自+"来电，向敌方"+阵地+"发起冲锋!拼死也要拿下！");<br />}<br />战地指挥部.addEventListener("on冲锋",敢死队); <br /><br />//---------------------------------------------------------------------<br />trace("司令部指示:");<br />var eventObj1 = new Object();<br />//定义事件对象eventObj1<br />eventObj1.target = 司令部;<br />//定义事件对象eventObj1的target属性值为司令部<br />eventObj1.type = "on进攻";<br />//定义事件对象的事件类型为'on进攻'<br />eventObj1.阵地="505阵地"<br />//一个自定义的属性'阵地',你可以附加更多其他的属性<br />司令部.dispatchEvent(eventObj1);<br />//司令部将定义好的事件对象广播出去，只有向它注册了'on进攻'属性的监听对象才能收到。步兵并不会发动进攻。<br />trace("战地指挥部指示:");<br />var eventObj2=new Object();<br />//eventObj2.target=战地指挥部;<br />//因为dispatchEvent方法会自动将事件对象的target属性设为默认的广播消息的对象，所以这句也可以注释掉。<br />eventObj2.type = "on进攻";<br />eventObj2.阵地="105阵地"<br />战地指挥部.dispatchEvent(eventObj2);<br />trace("传达司令部指示:");<br />var eventObj3=new Object();<br />eventObj3.target=战地指挥部;<br />//这里必须设定事件对象的target属性。因为dispatchQueue不会为target属性设定默认值<br />eventObj3.type="on冲锋";<br />eventObj3.阵地="123阵地";<br />司令部.dispatchQueue(战地指挥部,eventObj3);<br />//战争时期也许司令部并不知道前线部队的布置情况，所以它可以将指令传达给战地指挥部，由战地指挥部将事件对象广播给向自己的相关事件注册的监听对象<br />-----EventDispatcher测试.fla 结束-----<br />具体的测试结果我就不贴出来了。最后说说EventDispatcher类的几个有趣的地方:<br />1、监听事件的对象可以是Object、MovieClip，还可以是Function.例如：<br />假设在战场上每当发起冲锋时，都要呐喊助威，可以这样写：<br />function 鼓励士气(){<br />trace("冲啊!杀啊!");<br />}<br />战地指挥部.addEventListener("on冲锋",鼓励士气);<br />2、当监听事件的对象是自身时,一般的写法是这样的:<br />战地指挥部.on冲锋=function(){<br />trace("同志们，我们一定会取得最后的胜利！");<br />}<br />战地指挥部.addEventListener("on冲锋",战地指挥部);<br />但是还有一种更简洁的写法:<br />战地指挥部.on冲锋Handler=function(){<br />trace("同志们，我们一定会取得最后的胜利！");<br />}<br />这种写法不再需要用"addEventListener"来注册了。它有两点需要注意,一是它总在其他监听对象的事件处理之前执行，再就是它无法用'removeEventListener'方法注销监听。<br />3、监听对象的事件处理程序也可以这样写:<br />步兵.handlerEvent=function(eventObj){<br />var 来自=eventObj.target.名称;<br />var 阵地=eventObj.阵地;<br />var e=eventObj.type;<br />switch(e){<br />case "on进攻":<br />trace("步兵接到"+来自+"来电，轻装上阵，火速向敌方"+阵地+"前进!");<br />break;<br />case "on驻守":<br />trace("步兵接到"+来自+"来电，就地待命，多设岗哨,严防来犯之敌!");<br />break;<br />case "on冲锋":<br />trace("步兵接到"+来自+"来电，向敌方"+阵地+"发起冲锋!");<br />break;<br />default:<br />break;<br />}<br />司令部.addEventListener("on驻守", 步兵);<br />战地指挥部.addEventListener("on进攻", 步兵);<br />战地指挥部.addEventListener("on冲锋",步兵);<br /><br />好了，关于EventDispatcher类到此就介绍完了，希望大家能够掌握Flash的事件机制并灵活地运用它们。 
<div class="textbox-urls"><b>如果文章对你有帮助，请支持Google+Firefox</b><br /><br /><script type="text/javascript"><!--
google_ad_client = "pub-3527087615346771";
google_ad_width = 468;
google_ad_height = 15;
google_ad_format = "468x15_0ads_al_s";
google_ad_channel ="8017260400";
google_color_border = "000000";
google_color_bg = "000000";
google_color_link = "FFFFFF";
google_color_url = "FFFFFF";
google_color_text = "FFFFFF";
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-3527087615346771&amp;dt=1160277516296&amp;lmt=1160277516&amp;format=468x15_0ads_al_s&amp;output=html&amp;channel=8017260400&amp;url=http%3A%2F%2Fwww.nshen.net%2Fblog%2Farticle.asp%3Fid%3D329&amp;color_bg=000000&amp;color_text=FFFFFF&amp;color_link=FFFFFF&amp;color_url=FFFFFF&amp;color_border=000000&amp;ref=http%3A%2F%2Fwww.nshen.net%2Fblog%2Farticle.asp%3Fid%3D328&amp;cc=100&amp;u_h=768&amp;u_w=1024&amp;u_ah=715&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=2&amp;u_java=true" frameborder="0" width="468" scrolling="no" height="15" allowtransparency=""></iframe><br /><script type="text/javascript"><!--
google_ad_client = "pub-3527087615346771";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as_rimg";
google_cpa_choice = "CAAQycb8zwEaCNrmdvgKt1bFKJnA93M";
//--></script><br /><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-3527087615346771&amp;cpa_choice=CAAQycb8zwEaCNrmdvgKt1bFKJnA93M&amp;oe=utf-8&amp;dt=1160277516343&amp;lmt=1160277516&amp;format=468x60_as_rimg&amp;output=html&amp;url=http%3A%2F%2Fwww.nshen.net%2Fblog%2Farticle.asp%3Fid%3D329&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fwww.nshen.net%2Fblog%2Farticle.asp%3Fid%3D328&amp;cc=100&amp;u_h=768&amp;u_w=1024&amp;u_ah=715&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=2&amp;u_java=true" frameborder="0" width="468" scrolling="no" height="60" allowtransparency=""></iframe><br /><br /><img class="meta-button" alt="永久地址" src="http://www.nshen.net/blog/styles/default/images/rss_comment.png" /><b>永久地址:</b> http://www.nshen.net/blog/feed.asp?q=comment&amp;id=329 </div></div></div><br /><script language="javascript" src="common.js" type="text/javascript"></script><a name="comments"></a><div class="comment-wrapper" id="commentWrapper"><div class="comment-top" id="commentTop">浏览模式: <a href="javascript:toggleComments(true,true);"><font color="#002c99">阅读全文</font></a> | <a href="javascript:toggleComments(true,false);"><font color="#002c99">评论: 3</font></a> | <a href="javascript:toggleComments(false,true);"><font color="#002c99">引用: 27</font></a> | <a href="javascript:toggleOrder();"><font color="#002c99">Toggle Order</font></a> | 阅读: 2039 </div><div class="comment-pages"><span class="pagelink-current">1</span> | <a href="http://www.nshen.net/blog/article.asp?id=329&amp;page=2#comments"><font color="#002c99">2 </font></a>| <a href="http://www.nshen.net/blog/article.asp?id=329&amp;page=2#comments"><font color="#002c99">&gt; </font></a></div><div class="commentbox" id="comment548"><a name="comment548"></a><div class="commentbox-title"><a href="javascript:doQuote('comm_548','2ss')"><font color="#002c99"><img alt="引用" src="http://www.nshen.net/blog/styles/default/images/icon_quote.gif" /></font></a><b><a href="http://www.nshen.net/blog/user.asp?act=view&amp;id=0"><font color="#002c99">2ss*</font></a></b><div class="commentbox-label">[ 2005-10-07 09:19:05 ] </div></div><div class="commentbox-content" id="comm_548">你好：<br />我看了你的教程，写得很不错啊！可是我在用下面的代码测试时，对象方法中的代码没有执行，不知道是为什么？下面是我用的代码！<br />/*-----EventDispatcher测试.fla 开始-----*/<br />//导入 mx.events.EventDispatcher类<br />import mx.events.EventDispatcher;<br />var command:Object = new Object();<br />EventDispatcher.initialize(command);<br />command.addEventListener("onAssault", soldiers;<br />var soldiers:Object = new Object();<br />soldiers.onAssault = function(eventObj:Object) {<br />  trace("冲啊！");<br />};<br />command.dispatchEvent({type:"onAssault"}); </div></div><div class="commentbox" id="comment549"><a name="comment549"></a><div class="commentbox-title"><a href="javascript:doQuote('comm_549','N神')"><img alt="引用" src="http://www.nshen.net/blog/styles/default/images/icon_quote_author.gif" /></a><b><a href="http://www.nshen.net/blog/user.asp?act=view&amp;id=2"><font color="#002c99">N神</font></a></b><div class="commentbox-label">[ 2005-10-07 11:07:47 ] </div></div><div class="commentbox-content" id="comm_549">soldiers.onAssault = function 这种方式赋值函数的话要在后边再addListener，正确代码在下边<br /><br />import mx.events.EventDispatcher;<br />var command:Object = new Object();<br />EventDispatcher.initialize(command);<br />var soldiers:Object = new Object();<br />soldiers.onAssault = function(eventObj:Object) {<br />trace("冲啊！");<br />};<br />command.addEventListener("onAssault", soldiers)<br />command.dispatchEvent({type:"onAssault"}); <br /><br /><img alt="[redface]" src="http://www.nshen.net/blog/styles/default/images/smilies/icon_redface.gif" border="0" /> ps。这篇教程是转载的，是wiyi写的 </div></div></div></font>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/73734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-10-08 11:21 <a href="http://www.blogjava.net/sl2cj/articles/73734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>attachMovie外部swf中的元素</title><link>http://www.blogjava.net/sl2cj/articles/60702.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 29 Jul 2006 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/60702.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/60702.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/60702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/60702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/60702.html</trackback:ping><description><![CDATA[
		<strong>
				<font size="2">attachMovie外部swf中的元素 </font>
		</strong>
		<table class="docParameter" cellspacing="6" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<p>
												<font size="2">作者：</font>
												<a href="http://www.blueidea.com/common/contact.asp?type=作者&amp;username=jimbob" target="_blank">
														<font size="2">jimbob</font>
												</a>
												<font size="2">　时间： 2006-04-19　文档类型：原创　来自：</font>
												<a href="http://www.blueidea.com/">
														<font size="2">蓝色理想</font>
												</a>
												<font size="2">
														<br />浏览统计 total:3014 | year:3014 | Quarter:364 | Month:364 | Week:87 | today:10</font>
										</p>
										<p class="list">
												<font size="2">
												</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="border" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td>
										<font size="2">
												<img height="6" src="http://www.blueidea.com/img/spacer.gif" width="6" />
										</font>
								</td>
						</tr>
				</tbody>
		</table>
		<table class="pageLighter" cellspacing="11" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td class="content">
										<p>
												<font size="2">
														<strong>作者的个人站点:</strong>
												</font>
												<a href="http://jim.blueidea.com/" target="_blank">
														<font size="2">http://jim.blueidea.com/</font>
												</a>
												<font size="2">
												</font>
										</p>
										<p>
												<font size="2">相信大家都用过attachMovie这个语句，可以方便的绑定库中带Linkage输出的元素， 在一些游戏以及交互程度比较高的网站中经常会用到。 那么这里就遇到一个问题，假如我在sub.fla库里面用linkage设定了几个元素， 然后想在main.fla里面attachMovie这几个元素，该如何处理尼？</font>
										</p>
										<p>
												<font size="2">
														<strong>第一种方法</strong>，main.fla使用 loadMovie(); 或 loadMovieNum();先导入 sub.swf， 然后导入完成后，再使用attachMovie来绑定元素。 但是这种方法，使用受到一个很大的限制，就是只能在 loadMovieNum()语句导入所在的层，或者loadMovie()语句导入所在的mc上面使用attachMovie, 比如：</font>
										</p>
										<p>
												<font size="2">
												</font>
												<span class="code">
												</span>
										</p>
										<p>
												<font size="2">loadMovieNum("sub.swf",1);<br />_level1.attachMovie("cc","cc1",5);</font>
										</p>
										<p>
												<font size="2">是有效的</font>
										</p>
										<p>
												<font size="2"> loadMovieNum("sub.swf",1);<br />_level0.attachMovie("cc","cc1",5);</font>
										</p>
										<p>
												<font size="2">是无效的</font>
										</p>
										<p>
												<font size="2">同样：</font>
										</p>
										<p>
												<font size="2">
												</font>
												<span class="code">
												</span>
										</p>
										<p>
												<font size="2">loadMovie("sub.swf", "abc");<br />_root.abc.attachMovie("cc", "cc2", 50);</font>
										</p>
										<p>
												<font size="2">是有效的</font>
										</p>
										<p>
												<font size="2">loadMovie("sub.swf", "abc");<br />_root.attachMovie("cc", "cc2", 50);</font>
										</p>
										<p>
												<font size="2">是无效的</font>
										</p>
										<p>
												<font size="2">
														<strong>第二种方法</strong>，使用Export for runtime sharing的方式,方法如下：</font>
										</p>
										<p>
												<font size="2">在sub.fla中，设置好需要attach元素的 Linkage值，并选定 Export for ActionScript  以及 Export in first frame这两项<br />然后，在sub.fla中新建一个空的mc, 在库中设置这个空mc的linkage值为 ext  ,选定 Export in first frame 以及 export for runtime sharing， URL这一项则填写为 sub.swf 如图：</font>
										</p>
										<p align="center">
												<font size="2">
														<img height="215" src="http://www.blueidea.com/articleimg/2006/04/3389/01.gif" width="447" border="0" />
												</font>
										</p>
										<p>
												<font size="2">在main.fla中，新建一个空的mc，在库中设置这个空mc的linkage值为 ext ,然后选定 Import for runtime sharing , URL一项填为 sub.swf 如图：</font>
										</p>
										<p align="center">
												<font size="2">
														<img height="215" src="http://www.blueidea.com/articleimg/2006/04/3389/02.gif" width="447" border="0" />
												</font>
										</p>
										<p>
												<font size="2">然后在main.fla中，再新建一个mc，从库中把刚才的ext这个空mc拖放到新建的这个mc中，然后把这个新mc任意设置一个linkage值，然后选定Export for ActionScript  以及 Export in first frame这两项。<br />做好以上的两步，就可以在main.fla里面任意attach sub.fla里面的可用元素了，比如：</font>
										</p>
										<p>
												<font size="2">
												</font>
												<span class="code">
												</span>
										</p>
										<p>
												<font size="2">attachMovie("cc","cc", 1);<br />attachMovie("bar","bar", 2);</font>
										</p>
										<p>
												<font size="2">
												</font>
										</p>
										<p>
												<font size="2">
														<strong>第三种方法</strong>， 采用上面的第二种方法虽然已经很理想了，不过还是有一个限制，那就是必须编辑 sub.fla，加入 ext这个空mc， 那么有没有方法绕过去，可以不需要改动sub.fla，直接在main.fla里面做文章尼？  下面就介绍第三种实用方法：</font>
										</p>
										<p>
												<font size="2">假定我们现有一个tt.swf这个文件，里面库中设置了 linkage 为 a,b,c 的三个可用元素， 那么用下面的方法，可以不修改tt.fla，直接attach tt.swf里的这三个元素</font>
										</p>
										<p>
												<font size="2">我们打开主控文件mm.fla， 新建一个空mc，然后在库中设置linkage值为 a (或者b或者c，只要保持和tt.swf里面的某个linage值同名即可) ,然后选定 Import for runtime sharing , URL一项填为 tt.swf,如图：</font>
										</p>
										<p align="center">
												<font size="2">
														<img height="215" src="http://www.blueidea.com/articleimg/2006/04/3389/03.gif" width="447" border="0" />
												</font>
										</p>
										<p>
												<font size="2">然后在mm.fla中，再新建一个mc，从库中把刚才的a这个空mc拖放到新建的这个mc中，然后把这个新mc任意设置一个linkage值，然后选定Export for ActionScript  以及 Export in first frame这两项。<br />然后就可以在mm.fla里面任意attach tt.fla里面的可用元素了，比如：</font>
										</p>
										<p>
												<span class="code">
														<font size="2">_root.attachMovie("c", "c", 1);<br />_root.attachMovie("a", "a", 11);<br />_root.attachMovie("b", "b", 111);</font>
												</span>
										</p>
										<p>
												<font size="2">本教程第二以及第三种方法，提供源文件下载，有兴趣可以到 </font>
												<a href="http://www.blueidea.com/articleimg/2006/04/3389/attach.rar" target="_blank">
														<strong>
																<font size="2">下载</font>
														</strong>
												</a>
												<font size="2">（注源文件为flash8格式）</font>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/sl2cj/aggbug/60702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-07-29 11:46 <a href="http://www.blogjava.net/sl2cj/articles/60702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【黑羽】AS 3.0教程(2)：AS3.0的类及绑定</title><link>http://www.blogjava.net/sl2cj/articles/56123.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 01 Jul 2006 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/56123.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/56123.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/56123.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/56123.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/56123.html</trackback:ping><description><![CDATA[
		<h3 class="entry-header">【黑羽】AS 3.0教程(2)：AS3.0的类及绑定</h3>
		<div class="entry-content">
				<div class="entry-body">
						<p>hi，鸟笼山的朋友们，这次我们开始介绍AS3.0中的类如何和库中元件绑定，和特殊的Document Class设计。<br />总共4步：<br />1.建一个标准的AS3.0类 (暂命名为KingdaMC，多么伟大的名字啊，简称“有名”)<br />2.新建一个元件，并设置它的Linkage和上面的类绑定。<br />3.在时间轴上写代码，用AS3.0代码创建n份“有名”。<br />4.删掉时间轴上代码，使用Flash 9新特色Document Class在舞台上创造n份“有名”。just 体验一把。</p>
						<p>（写起来才知道要讲的内容多啊，晕，打了两个小时，累了，本节专门只讲讲AS3.0的类吧，其余的慢慢再讲）<br />在创建AS3.0之前，请允许我先对AS3.0类的语法和继承设计表示敬意。与标准的完全兼容，更好更严格的封装特性，特别是命名空间(name space)的引入。从今天起从AS3.0起， 在OOP层面上，AS3.0已经和Java，C#平起平坐了，甚至在某些方面(比如name space)比java更有意思。</p>
						<p>让俺对AS2.0老鸟说几句憋在心里的激动之语：<img title="pfft!" height="20" alt="tongue.gif" src="http://www.kingda.org/mt-static/smilies/tongue.gif" width="20" border="0" /><br />如果说AS2.0只是外表接近OOP标准语言，内在还是乱糟糟的AS1.0脚本语言，那么AS3.0不论是从OOP设计级别，还是从编译器级别（如，对弱引用—— week reference—— 的支持）来评估的都是标准、正宗、强大的语言。</p>
						<p>从AS3.0起，我们ActionScript 开发者可以挺起胸口，俺们是真正的行业标准级程序员。</p>
						<p>在我继续教程之前，我要唱首歌给大家听：<br />AS3的英明，绝对不是一句两句能说清！~~~~~~<img title="big grin!" height="20" alt="biggrin.gif" src="http://www.kingda.org/mt-static/smilies/biggrin.gif" width="20" border="0" /></p>
				</div>
				<div class="entry-more" id="more">
						<p>打完，收工。</p>
						<p>1.建立AS3.0类文件，<br />类文件是干嘛用的？比如说，我们想让一个对象(Object)有很多功能，比如说这个对象是MovieClip型的，支持拖拽，支持双击等等。那么先在一个类文件里写清楚这些要求和实现方法，然后就可以用这个类创建许多实例，这些实例就全具有了这些功能。写一次，就能用很多次，多好。最重要的是它还可以通过继承来重用很多代码，为将来节省更多的时间。</p>
						<p>废话少说，Ctrl+N打开“新建”窗口，选择建立“ActionScript file”，Ctrl+S，暂存为"KingdaMC.as"文件。（即“有名”的类文件）。</p>
						<p>输入如下代码：<br /></p>
						<pre>
								<br />
//【黑羽】ActionScript 3.0系列教程(2)<br />
// http://www.kingda.org<br />
//代码如下<p></p><p>//package 见讲解1<br />
package {                                        <br />
   import flash.display.MovieClip;     //讲解2<br />
   import flash.events.MouseEvent;  </p><p>   //讲解3<br />
   public class KingdaMC extends MovieClip { <br />
        public function KingdaMC() {<br />
         trace("Kingda created: " + this.name);<br /><br />
         this.buttonMode = true;<br />
         this.addEventListener(MouseEvent.CLICK, clickHandler);<br />
         this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);<br />
         this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);<br />
      }<br />
      private function clickHandler(event:MouseEvent):void {<br />
         trace("You clicked the ball");<br />
      }<br />
      function mouseDownListener(event:MouseEvent):void {<br />
         this.startDrag();<br />
      }<br />
      function mouseUpListener(event:MouseEvent):void {<br />
         this.stopDrag();<br />
      }<br />
   }<br />
}</p></pre>讲解1： AS2.0中我们使用的是全饰名称来声明类，通俗说，包括了类的路径在类名前。AS3.0则把路径提取出放在package这个关键字后面。本文例子中的类文件和Fla文件在同一个目录下，因此 package后面没有什么东西。如果类文件在 org目录下的kingda目录里，那么就要写成 <pre>// ActionScript 2.0
class org.kingda.KingdaMC {  
}

<p>// ActionScript 3.0<br />
package org.kingda {<br />
  public class KingdaMC {}<br />
}<br /></p></pre><br />你在package中可以定义好几个类，不用再写全饰名称了。但我不推荐这样做。一个文件一个类比较好管理。 
<p></p><p>讲解2：<br />MovieClip类再也不像AS2.0那样是默认的全局类了。你要使用MovieClip类一定要写这一句导入。</p><p>讲解3：<br />类在AS3.0中也有public 和 internal的区分了。<br />public 表示这个类可以在任何地方导入使用。<br />internal表示这个类只能在同一个package里面使用。<br />不写，就默认为internal这个新的关键字。<br />还有一个属性是final，表示这个类不能被继承了，继承树到此为止。<br />说白了，这三个属性都是用来让我们更加规范的管理类之间的关系，以便将来修改时心里有谱，大大的方便了修改。</p><p>同时，对架构的设计能力要求更高，新手们和小项目还是多使用public吧。越到后来你会越喜欢internal的。我只要看到internal和private这两个关键字，心中就无比的稳定和舒服。想来不少programmer和我都会有同感吧。</p><p><br />2.新建一个元件，并设置它的Linkage和上面的类绑定。<br />和教程第一章一样，画一个方块，按F8转成MovieClip，再在库中右键点击它，选择"linkage"</p><p><a href="http://www.kingda.org/blog/doc/img/2.gif"><img height="306" alt="2.gif" src="http://www.kingda.org/blog/doc/img/2-thumb.gif" width="400" /></a><br />点击看大图。</p><p>在Class里面写上KingdaMC。注意，id输入框已经被废止了。因为在AS3.0中，再也没有MovieClip.attachMovie(), MovieClip.createEmptyMovieClip(), 以及 MovieClip.createTextField()的存在了。<br />所有舞台的可见对象都由new来创建。<br />比如说本例中，symbol1绑定了KingdaMC，那么如果我要在舞台上创建一个KingdaMC，只要写<br /></p><pre><br />
var b1:Kingda = new KingdaMC();<br />
addChild(b1);<br /></pre><br />即可。 
<p></p><p>还记得以前那些乱七八糟的创建影片和组件的语法吗？什么createClassObject(),DepthManager的createChildAtDepth(),createClassChildAtDepth(),等等等等。我的一个java同事刚刚学习AS时，被上面哪些乱乱的创建函数弄得一头雾水。统统没有了。只有一统天下的new ClassName()，多标准哪，多舒服啊，多好学啊。<br /><strong>所以说，没学AS2.0直接学AS3.0绝对是新手的福气。</strong></p><p>第二句,addChild这个很重要。<br />光有第一句new可不行。那只是告诉Flash我建了一个名字叫b1的KingdaMC要显示，但还没告诉Flash什么时候显示呢。<br />你什么时候打addChild(b1)，那Flash才会把它显示在舞台上。怎么样，多简单。<br />其实这里省略了一个this。如果你有一个MovieClip名叫BigKingda，希望在这个BigKingda里面加上一个KingdaMC实例，那么就要写<br /></p><pre><br />
BigKingda.addChild(b1);<br /></pre><br />非常简单。 
<p></p><p>Ctrl+Enter测试，发现创建的KingdaMC，支持拖拽。<br />大家试着用代码多创建几个KingdaMC，比如用for循环来建个10个8个的来玩玩。 </p><p>好了，累了，要歇歇了，下次讲Document Class。</p></div>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/56123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-07-02 00:21 <a href="http://www.blogjava.net/sl2cj/articles/56123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>探索F9 As3.0 Preview </title><link>http://www.blogjava.net/sl2cj/articles/56122.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 01 Jul 2006 16:19:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/56122.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/56122.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/56122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/56122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/56122.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="5" width="658" align="center" border="0">
				<tbody>
						<tr>
								<td align="middle" width="100%">
										<b>探索F9 As3.0 Preview</b>
								</td>
						</tr>
						<tr>
								<td>本文作者:<a href="mailto:ry_wang@163.com" target?_blank?=""><font color="#636194">egoldy</font></a><br />文章出处:http://www.adobe.com<br />文章性质:翻译<br />阅读次数:482<br />发布时间:2006-06-30</td>
						</tr>
						<tr>
								<td>
										<b>
												<center>探索Flash Professional Actionscript 3.0 Preview</center>
										</b>
										<br />
										<br />      声明：本教程英文版源自Adobe的：<a href="http://www.adobe.com/devnet/flash/articles/flash9_as3_preview.html" target="_blank"><font color="#636194">http://www.adobe.com/devnet/flash/articles/flash9_as3_preview.html</font></a>原作者：Jen deHaan和Peter deHaan,本站对其进行了翻译整理，此教程转载请注明出处．并标有活动链接，谢谢合作． <br />      Adobe Flash Professional 9 ActionScript 3.0 Preview(以下简称AS3.0预览版)是下一个将要发布的flash 创作工具的预览。众所周知它的名字是”Blaze”,它扩展了Flash Professional 8 并包括了一系列特性将与Flash9 一同发布，计划将在2007年发布。 <br />    这个预览版本包括支持Actionscript 3.0,它的优势在于包含在flash player 9 中的一个新的虚拟机(AVM)，这个增强的虚拟机要比传统的Actionscript 代码的执行速度快上10倍，如果你想获得更多的关于flash player 9的信息，请查看<a href="http://www.adobe.com/go/flashplayer/" target="_blank"><font color="#636194">Flash Player Product page</font></a><br />       Flash9预览版允许你编译包含或导入到Fla中的Actionscript3.0 脚本，贴加在帧上或是与库元件关联的脚本在编译过程加入与场景内容的交互。 <br />    这篇文章是通过使用Flash的绘制工具创建一个新的形体来展开的，当你学完了如果让形体与按钮和鼠标交互移动，你会明白如果将actionscript从主时间轴上移到外部文件，怎样与库中的元件或是Flash文档自身链接。 <br />    要完成此文章你需要<a href="http://www.adobe.com/go/labs_flash9as3preview_downloads" target="_blank"><font color="#636194">Flash Professional 9 Actionscript 3.0</font></a> 和<a href="http://download.macromedia.com/pub/developer/flash9_as3_preview.zip" target="_blank"><font color="#636194">范例文件</font></a><br /><br /><b>在FLASH中编写Actionscript 3.0</b><br /><br />      Flash9 预览版只是一个开发环境，它允许你创建Flash文档(FLA)并使用Actionscript 3.0,当然你也可以使用Flex Builder 2来编译As3.0. <br />Flash9预览版能让你创建基于时间线的Actionscript3.0文档，并可以使用其它的一些特性，如形变和运动缓动，flash.display.MorphShape类，abobe.utils package,static text fields,scenes,和库。 <br />Flash9 预览版包括下面几个新特性: <br />1.<b>Document class: </b><br />Flash9引入了document class的概念，定义为与你的swf文件的主时间线关联的类。当你初始化主时间线时，document class就已经被构造了。你可以文件的属性面板或Actionscript 3.0发布设置面板上设置document class,如：File&gt;Publish Settings &gt; Flash tab &gt; Settings button <br />如下图： <br /><a href="http://www.webstudio.com.cn/tutorial/tuts/Flash9As3/fig01.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.webstudio.com.cn/tutorial/tuts/Flash9As3/fig01.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" /></a><br /><br />2.<b>Symbol-class linkage: (元件-类链接)</b><br />在ActionScript 3.0中你不再需要链接id了，取而代之的是，你可以为你能直接实例化或动态创建实例的元件指定一个特定的类名称。如下图所示： <br /><a href="http://www.webstudio.com.cn/tutorial/tuts/Flash9As3/fig02.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.webstudio.com.cn/tutorial/tuts/Flash9As3/fig02.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" /></a><br /><br />3.如果类不能在你指定的类路径当中找到，那么Flash会在场景之后创建一个以使它仍可以被实例化。如下图所示： <br /><a href="http://www.webstudio.com.cn/tutorial/tuts/Flash9As3/fig03.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.webstudio.com.cn/tutorial/tuts/Flash9As3/fig03.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" /></a><br /><br />4.<b>Errors and warnings: （错误和警告）</b><br />针对ActionScript 3.0 errors和warnings增加了两个操作.你可以在Actionscript 3.0的特性面板上选择。如：选择Edit&gt;Preferences &gt; ActionScript &gt; Actionscript 3.0设置按钮。如下图。 <br />—个是Strict Mode,使编译器在编译过程中遇到问题时非常的严格，都会当做错误来处理而不是警告。另一个是Warnings Mode,会出现额外的警告，大多数情况下当你从Actionscript 2.0迁移到As3.0时，会起到很大的帮助，当你选择了Warning时，你可以通过编辑EnabledWarnings.xml文件中的Enabled属性来定义你想要的警告。EnabledWarnings.xml文件的位置： <br />o Windows: C:\Program Files\Adobe\Flash 9 Public Alpha\en\Configuration\ActionScript 3.0\EnabledWarnings.xml <br />o Mac OS: HD|Applications|Adobe Flash 9 Public Alpha|Configuration|ActionScript 3.0|EnabledWarnings.xml <br /><br /><a href="http://www.webstudio.com.cn/tutorial/tuts/Flash9As3/fig04.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.webstudio.com.cn/tutorial/tuts/Flash9As3/fig04.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" /></a><br />       <br /><b>Creating clickable and draggable shapes（创建可点击和可拖动的形体）</b><br /><br />      在这个例子中，你将探索flash9 预览版了一些新特性，你将创建一个简单的形体并使用改良的事类模型来使它可以点击,在后面的例子中，你将使这个形体可以拖动，将你的代码转换为类和动态创类的实例。 <br /><br /><b>Clickable shapes(可点击的形体)</b><br /><br />下面我们先开始创建一个可以点击的形体。 <br />1. 选择文件&gt;新建一个文档，并将它保存为simpleBall.fla. <br />2. 选择绘制圆工具，在场景中绘制一个正圆。当然在绘制的时候按住shift就可以了。 <br /><b>注意：</b>在绘制时候确何你的Object Drawing mode（对象绘模式）是关闭的。 <br />3．选中选择工具并双击这个形体使它高亮显示 <br />4.  当这个形体选中后，选择编辑modify&gt;Convert to Symbol转换为元件(按F8)来打开元件转换窗口， <br />5．将名称改为circle然后点击ok,将它转换为影片剪辑。 <br />6． 元件要仍处于选中的状态，在属性面板上为它起一个实例名为：ball_mc <br />7． 取消对元件的选择打开action面板(F9). <br />8．在Action面板上输入如下代码： <br /><table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0"><tbody><tr><td><b>代码:</b></td></tr><tr><td></td></tr><tr><td class="code">ball_mc.addEventListener(MouseEvent.CLICK, clickHandler); <br />function clickHandler(event:MouseEvent):void { <br />   trace("You clicked the ball"); <br />}</td></tr><tr><td></td></tr></tbody></table><br />在这段代码中，ball_mc实例变成了可以点击的了，因为你加入了事件侦听用来检测用户是否有点击动作，无论何时只要用户点击了ball_mc影片剪辑，clickHandler()函数就会执行。这非常类似于之前版本在组件中加入侦听事件，如As2.0使用onPress()事件来检测用户是否点击了剪辑或按钮。 <br />9．选择Control&gt;Test Movie 测试影片，当你点击圆时，就会在面板上输出”you clicked the ball. <br />10．关闭Swf文件返回Flash操作环境，编辑你的Actionscript 代码，在原有代码的上面加入如下一行代码： <br />ball_mc.buttonMode = true; <br />11．重新测试你的影片,当你的光标位于圆之上时，光标就会变成一只小手的形状。用于给用户一个提示，这是可以点击的。 <br /><br /><b>Draggable shapes(可拖动的形体)</b><br /><br />      如果你想让用户可以在场影中拖动这个形体，你需要加入两个事性侦听器，mouseDown(MouseEvent.MOUSE_DOWN)和mouseUp(MouseEvent.MOUSE_UP),如下面的例子。 <br />下面的例子示范如何为mouseDown和mouseUp事件加入事件侦听器 <br />1.编辑我们之前的例子中代码如下： <br /><table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0"><tbody><tr><td><b>代码:</b></td></tr><tr><td></td></tr><tr><td class="code"><br />ball_mc.buttonMode = true; <br />ball_mc.addEventListener(MouseEvent.CLICK, clickHandler); <br />ball_mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener); <br />ball_mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener); <br />function clickHandler(event:MouseEvent):void { <br />  trace("You clicked the ball"); <br />} <br />function mouseDownListener(event:MouseEvent):void { <br />   ball_mc.startDrag(); <br />} <br />function mouseUpListener(event:MouseEvent):void { <br />   ball_mc.stopDrag(); <br />} <br /></td></tr><tr><td></td></tr></tbody></table><br />2.测试你的影片。你就可拖动这个圆了。 <br />虽然我们编写这个例子没有花费我们多少时间，但如果再让你写一个可拖动的形体，你可能不会情愿去写，假想你能将你的代码转换为与元件连接的外部类文件,它可以自动的创建可拖动的形体，会在将来结省你的大量时间。下面我们就看如何实现。 <br /><br /><b>Converting code into a class(将你的代码转换成类)</b><br /><br />下面的例子创建一个Actionscript类它封装整个影片剪辑的拖动的实现逻辑。现在不管什么时候，只要创建一个类的新的实例被创建，它就是可拖动的。无须为场景中的每个实例去写代码。 <br />1.创建一个新的Fla文档并将它保存为fancyBall.fla. <br />2.选择File&gt;New选择Actionscript File创建一个新的Actionscript文件。 <br />3.保存这个Actionscript文件为Ball.as与Fla文件为同一路径下。也就是刚才创建的fancyBall.fla. <br />4. 在里面输入如下代码： <br /><table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0"><tbody><tr><td><b>代码:</b></td></tr><tr><td></td></tr><tr><td class="code">package { <br />  import flash.display.MovieClip; <br />   import flash.events.MouseEvent; <br />   public class Ball extends MovieClip { <br />      public function Ball() { <br />         trace("ball created: " + this.name); <br />         this.buttonMode = true; <br />         this.addEventListener(MouseEvent.CLICK, clickHandler); <br />         this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener); <br />         this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener); <br />      } <br />      private function clickHandler(event:MouseEvent):void { <br />         trace("You clicked the ball"); <br />      } <br />      function mouseDownListener(event:MouseEvent):void { <br />        this.startDrag(); <br />      } <br />      function mouseUpListener(event:MouseEvent):void { <br />         this.stopDrag(); <br />      } <br />   } <br />} <br /></td></tr><tr><td></td></tr></tbody></table><br />       上面的代码定义了一个新类名为Ball,它继承了MovieClip类(内置在flash.display package中).注意在使用As3.0书写外部类时，你必须明确的导入所需要类。不同于在Fla内部书写代码。 <br />5．保存并关闭Ball.as文档，然后打开fancyBall.fla文档。 <br />6. 使用绘制圆工具，在场景中绘制一个圆并将转换为movieClip. <br />7．右击刚刚建立的圆，选择链接。 <br />8．选择Export for ActionScript(为action导出)，在Class(类)的输入框中输入类名Ball <br />9．点击ok.关闭此面板。 <br />10．确何这个圆的实例在场景中，测试影片。观看是否与之前的效果是一样的。 <br />它看起来很不错，下面的例子我们来看如何动态的创建类实例。 <br /><br /><b>Dynamically creating instances of a class（动态创建类实例）</b><br /><br />      你不需要在创作时总是将元件拖动到场景中，你也可以通过使用Actionscirpt新操作方法在库中创建新的类实例。 <br /><br /><b>Using the new operator（使用新的操作）</b><br /><br />     之前的Actionscript在创建新的MovieClip或是TextField实例时是通过使用如MovieClip.attachMovie(),MovieClip.createEmptyMovieClip(),或MovieClip.createTextField().来创建的。在ActionScript 3.0中，你可以通过类似如new Ball()的方法创建新的MovieClip,TextField,Sprite,和Video 实例—或是你自定义的类，如下方法： <br />1.打开fancyBall.fla.将场景中的所有实例元件删去，在主时间线上加入如下代码： <br /><table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0"><tbody><tr><td><b>代码:</b></td></tr><tr><td></td></tr><tr><td class="code">var b1:Ball = new Ball();</td></tr><tr><td></td></tr></tbody></table><br />2.按下ctrl +回车测试，注意，我们会发现没有任何东西出现在场景中，但是在输出面板上会显示：“ball created: instance1”,尽管Flash创建了ball的一个新的实例，但它是不可视的，因为你没有使用addChild()将它加入到显示列表中。 <br />3.编辑代码，将b1实例加入到显示列表中。测试。 <br /><table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0"><tbody><tr><td><b>代码:</b></td></tr><tr><td></td></tr><tr><td class="code">addChild(b1);</td></tr><tr><td></td></tr></tbody></table><br /><br />     下一部你需要使用document class,它将允许你将代码从主时间轴的第一帧上移到一个外部文档中，它类似与之前例子中的通过元件与类连接. <br /><br /><b>Using the Document Class text box(使用Document class输入框)</b><br /><br />下面示范如何将你的代码从主时间轴移到一个外部的As文件中。 <br />1.删去fancyBall.fla第一帧上的代码。 <br />2.创建一个新的Actionscript文档保存为BallDocumentClass.as，与fancyBall.fla处于同一目录下。 <br />3.加入如下代码在BallDocumentClass.as中： <br /><table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0"><tbody><tr><td><b>代码:</b></td></tr><tr><td></td></tr><tr><td class="code">package { <br />   import flash.display.MovieClip; <br />   public class BallDocumentClass extends MovieClip { <br />      private var tempBall:Ball; <br />      private var MAX_BALLS:uint = 10; <br />      public function BallDocumentClass() { <br />         var i:uint; <br />         for (i = 0; i &lt; MAX_BALLS; i++) { <br />            tempBall = new Ball (); <br />            tempBall.scaleX = Math.random(); <br />            tempBall.scaleY = tempBall.scaleX; <br />            tempBall.x = Math.round(Math.random() * (this.stage.stageWidth - tempBall.width)); <br />            tempBall.y = Math.round(Math.random() * (this.stage.stageHeight - tempBall.height)); <br />            addChild(tempBall); <br />         }     <br />      } <br />   } <br />} <br /></td></tr><tr><td></td></tr></tbody></table><br />4.保存并关闭这个as文档，打开fancyBall.fla. <br />5.在属性面板的document class后面的输入框中输入BallDocumentClass，保存文件。 <br />6.测试，你会发现有10个大小位置不同的元件出现在场景中。 <br />使用Document Class允许你将代码放置在外部文件中，而不是时间线上，可以在许许的fla文件重用代码，并且在团队协作版本控制系统(CVS)中,更容易共享代码。 <br /><br /><b>总结：</b><br /><br />       这篇文章只是对As3.0的一个简单应用介绍，只要告诉大家如何创建简单的类，如何使用改良的侦听事件模型，如何使用document class. <br /><br /><b>Ps by egoldy:学完这篇文章，你会发现自已也可以编写在fla中看不见一行代码的程式了，真正的是界面与代码分离，控制，看上去真的是很酷，如果你也在学习As3.0，别忘了把你的心得分享一下。Cheers J.</b></td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/sl2cj/aggbug/56122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-07-02 00:19 <a href="http://www.blogjava.net/sl2cj/articles/56122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查看完整版本 : 怎样在Flash里嵌入Flash影片？</title><link>http://www.blogjava.net/sl2cj/articles/52103.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Mon, 12 Jun 2006 01:04:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/52103.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/52103.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/52103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/52103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/52103.html</trackback:ping><description><![CDATA[
		<p class="largefont">
				<font size="2">查看完整版本 : </font>
				<a href="http://www.v6dp.com/showthread.php?t=5925">
						<font size="2">怎样在Flash里嵌入Flash影片？</font>
				</a>
		</p>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">天使之翼</font>
						</div>
						<div class="date">
								<font size="2">2005-08-08, 15:03</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">做一个FLASH网站，怎么加载另外的FLASH到场景里？<br />类似画中画的效果 :confused:</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">明天</font>
						</div>
						<div class="date">
								<font size="2">2005-08-08, 15:42</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">将嵌入的flash做成影片剪辑就可以了</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">天使之翼</font>
						</div>
						<div class="date">
								<font size="2">2005-08-08, 15:46</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">将嵌入的flash做成影片剪辑就可以了<br /><br />这个我知道，这样会增加文件的大小，影响网上浏览速度。<br />我想把影片分成若干个FLASH文件载入。</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">actionscript</font>
						</div>
						<div class="date">
								<font size="2">2005-08-08, 15:48</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">简单一点<br />同样是loadmovie<br />载入与被载入的影片实际大小是一致的<br />当然，被载入的影片实际有动画的就是你图中的小红框部分<br /><br />通过在对应的层loadmovie要载入的影片<br />可以简便的实现效果</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">天使之翼</font>
						</div>
						<div class="date">
								<font size="2">2005-08-08, 17:05</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">简单一点<br />同样是loadmovie<br />载入与被载入的影片实际大小是一致的<br />当然，被载入的影片实际有动画的就是你图中的小红框部分<br /><br />通过在对应的层loadmovie要载入的影片<br />可以简便的实现效果<br /><br />不行，这样整个页面都在LOAD！<br />我只要小画面里显示加载数据，然后单独操作播放。</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">OREZ</font>
						</div>
						<div class="date">
								<font size="2">2005-08-08, 23:53</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">我也是用 loadmovie就ok了<br />用层或者目标窗口都可以的</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">天使之翼</font>
						</div>
						<div class="date">
								<font size="2">2005-08-09, 16:58</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">哈哈…………经过反复实验终于成功实现理想效果。<br />果然还是LoadMovie的作用，只不过要用一个影片组建来指定位置。<br />恩！还是要谢谢大家。 :D</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">天使之翼</font>
						</div>
						<div class="date">
								<font size="2">2005-08-10, 17:00</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">晕……又碰到新问题了，现在在FLASH模式下浏览影片能正确加载嵌入。为什么一导入进HTML里浏览就无法正常加载嵌入？？？<br />难道脚本有错，还是别的原因？<br /><br />LOADMOVIE的脚本<br /><br />loadMovie("\\word.swf", "");<br /><br />word.swf为被嵌入的影片。<br />还有什么“位置”“目标”“变量”之类的选项都有什么做用？</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">真·大头</font>
						</div>
						<div class="date">
								<font size="2">2005-08-10, 17:39</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">如果你放在同一个目录下应该是loadMovie("word.swf");<br />没有\\的<br /><br />其他参数不写用默认的就行了</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">真·大头</font>
						</div>
						<div class="date">
								<font size="2">2005-08-10, 17:45</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">还有一般是在外面的flash用点语法写的<br />比如你把那个要载入的mc命名为a，在外面的桢写a.loadMovie("word.swf")，然后还能顺便定义a的大小位置什么的</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">adam</font>
						</div>
						<div class="date">
								<font size="2">2005-08-10, 21:11</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">问题一：如何控制被加载进来的SWF文件的坐标和长宽比例大小？<br /><br />控制被加载进来的SWF文件控制其长宽要采用onEnterFrame，比如：<br /><br />on (press) {<br />loadMovie("a2.swf", "_root.mymc");<br />onEnterFrame = function () {<br />_root.mymc._x = 0;<br />_root.mymc._y = 0;<br />_root.mymc._width = 330;<br />_root.mymc._height = 240;<br />};<br />}<br /><br />为什么用 onEnterFrame呢？因为被加载进来的的过程中，有点延时，如果没有onEnterFrame语句，那么语句读取一次就不读取了，然而读取了这一次之后，还没有加载进来，所以就会导致坐标大小设置无效。同样，如果加载到层上，也是这样的。<br /><br />on (press) {<br />loadMovie("a1.swf", 1);<br />onEnterFrame = function () {<br />_level1._x = 17;<br />_level1._y = 30;<br />_level1._width = 330;<br />_level1._height = 240;<br />};<br />} <br /><br />请注意这两种方法，第一种，把外部的a2加载到mymc中，加在进来后，a2就自动的替换了mymc，我们直接设置mymc的属性就设置了被加载进来的swf的属性。第二种方法，_level是对于加载到时间轴上的电影的引用，加载到第2层就是_level2；加载到第3层就是_level3。</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">adam</font>
						</div>
						<div class="date">
								<font size="2">2005-08-10, 21:12</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">问题之二：如何实现点击按钮加载一个外部SWF文件，并且要显示加载的下载进度呢？<br /><br />有两个方法来实现这个效果，其一：把加载londing写在主文件中，其二，被加载的子SWF文件有自己的londing。现在分别给予说明。<br /><br />其一：在主文件中写londing<br /><br />外部子swf文件名为a1，主文件中有一个动态文本框名为loadText，一个按钮名为bbt,现在把loadMovie和londing写在桢上。<br /><br />_root.bbt.onPress = function() {<br />_root.createEmptyMovieClip("mc", 10);<br />mc.loadMovie("a1.swf");<br />mc._visible = false;<br />_root.bbt.onEnterFrame = function() {<br />var l = mc.getBytesLoaded();<br />var t = mc.getBytesTotal();<br />var getPercent = l/t;<br />loadText = Math.round(getPercent*100)+"%";<br />if (l&gt;0 &amp;&amp; l&gt;=t) {<br />mc._visible = true;<br />delete this.onEnterFrame;<br />}<br />mc._x = 10;<br />mc._y = 10;<br />mc._width =440;<br />mc._height = 320;<br />};<br />};<br /><br />其二：子文件中有自己的londing<br /><br />这个写法与前面说的londing一样，只是注意一个问题就是注意路径的问题，比如这样写：<br /><br />第一祯<br /><br />loaded = getBytesLoaded();<br />total = getBytesTotal();<br />lts = Math.round((loaded/total)*100);<br />wenben = lts+"%";<br /><br />第二祯<br /><br />if (lts == 100) {<br />gotoAndStop(3);<br />} else {<br />gotoAndPlay(1);<br />} <br /><br />和前面的londing中介绍的比较，看出不同之处没有呢？仅仅是去掉了_root因为被加载后，外部SWF文件就相当于主文件中的一个MC 有了_root 就是指向主文件的_root 了，当然会显示错误。</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">adam</font>
						</div>
						<div class="date">
								<font size="2">2005-08-10, 21:12</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">问题三：我想在舞台上画一个屏幕，然后点击一个按钮就载入一个外部swf进行播放该怎样做呢？<br /><br />那么我们就来一起做一个相册吧。当主文件载入后，单击按钮就载入一个外部swf 文件，并且都有londing显示。首先我们做好以下准备工作：（1）准备几张图片，现在我们准备7张，6个子文件一个一张，主文件用一张。（2）主文件舞台大小为了适应网页的需要，设置为770*420。子文件舞台大小设置为512*384，这样就不需要载入后控制大小了，方便些（其实我们应当这样，省去一些麻烦。<br /><br />一、制作子文件。每个都用来显示图片，第一和第二祯写londing，第三祯~~二十祯根据自己的爱好做点亮度变化，以产生动感，最后一祯写上stop()。第一和第二祯的londing如下<br /><br />第一祯<br /><br />loaded = getBytesLoaded();<br />total = getBytesTotal();<br />lts = Math.round((loaded/total)*100);<br />wenben = "数据下载中 "+lts+"%";<br /><br />第二祯<br /><br />if (lts == 100) {<br />gotoAndPlay(3);<br />} else {<br />gotoAndPlay(1);<br />} <br /><br />就这样如法炮制的制作6个，分别命名为b1…..b6都发布成swf文件。保存在一个文件夹中。<br /><br />二、制作主文件<br /><br />第一祯用来写londing，第2祯放一些像屏幕一样的东西，和按钮，为了增加效果，放一个音乐在时间轴上。<br /><br />第一祯的londing//由于前面已经说得多了，就不赘述了<br /><br />stop();<br />i = 0; ,<br />onEnterFrame = function () {<br />// 使用不断触发的事件<br />loaded = _root.getBytesLoaded();<br />total = _root.getBytesTotal();<br />var aa = Math.round((loaded/total)*100);<br />_root.dongtai.wenbens = aa+"%";<br />_root.dongtai._x = 188+aa*3;<br />_root.bb._width = aa*3;<br />if (aa&gt;=100) {<br />// 检测到满足条件就跳出来，否则继续循环<br />_root.gotoAndStop(2);<br />delete this.onEnterFrame;<br />// 使用delete的目的是当完成下载后销毁onEnterFrame事件，以节约资源的消耗。<br />}<br />};<br /><br />第2祯的按钮上的AS<br /><br />on (press) {<br />_root.i++;<br />if (i == 7) {<br />i = 6;<br />}<br />loadMovie("b"+i+".swf", "_root.mc");<br />_root.tishi = "第"+i+"张图片";<br />} <br /><br />偷点懒，就不详细的赘述其含义， 我们也可以用很长的语句来实现相同的效果，这种写法是对AS的一种浓缩。</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">adam</font>
						</div>
						<div class="date">
								<font size="2">2005-08-10, 21:13</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">问题四：我想逐次载入多个外部文件，当第一个载入播放完毕后，立即载入第2个，第二个播放完毕后，立即载入第3个 ，……，直到结束。怎么办？<br /><br />首先对这种提问，我们先要质问一下提问的人，这样做有什么意义？ 与其这样，不如全部做到一个SWF中，因为每次调用一个外部SWF的时候，需要一定的时间来等待下载。当然，如果你想制作一个连续剧，播放完了一个后，用londing下一集的londing画面显示“正在载入下集，请稍候”那么还是可以的。<br /><br />方法很简单：依照问题三的原文件，稍微修改，去掉一个按钮，用一个按钮载入第一个，然后再第一个的最后一祯放个调用主文件中的函数即可。<br /><br />按钮：<br /><br />on (press) {<br />loadMovie("b1.swf", "_root.mc");<br />} <br /><br />主文件定义的函数<br /><br />function go2() {<br />loadMovie("b2.swf", "_root.mc");<br />}<br />function go3() {<br />loadMovie("b3.swf", "_root.mc");<br />}<br />function go4() {<br />loadMovie("b4.swf", "_root.mc");<br />}<br />function go5() {<br />loadMovie("b5.swf", "_root.mc");<br />}<br />function go6() {<br />loadMovie("b6.swf", "_root.mc");<br />}<br /><br />第一个b1 SWF的最后一祯_root. go2(),第二个外部SWF的最后一祯 _root.go3()………..</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">adam</font>
						</div>
						<div class="date">
								<font size="2">2005-08-10, 21:15</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">天使之翼 (http://www.v6dp.com/member.php?u=54) vbmenu_register("postmenu_70481", true); 请等几天,我正在给你写flash整站的教学教程！<br />不好意思！<br />这两天实在太忙</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">天使之翼</font>
						</div>
						<div class="date">
								<font size="2">2005-08-11, 02:46</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">谢谢！adam的回复，好复杂，我要慢慢消化：）<br />再次感谢。 :D</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">adam</font>
						</div>
						<div class="date">
								<font size="2">2005-08-11, 09:48</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">厚厚～～，翼也在做自己的个人站点把！！<br />我也在做！共同努力</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">亦韦</font>
						</div>
						<div class="date">
								<font size="2">2005-08-11, 11:34</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">果然是高手，很受用！其实也不用这么麻烦，一般的效果，应该用loadmovie就足够了，载入到空MC下，空MC摆放到要载入影片指定位置，再把要导入的影片loadmovie进来就行了。如果用loadmovienum<br />加载到层中的话，固定位置稍有些麻烦，需要的朋友可以搜一下，网上相关资料很多，本人水平有限，就不“班门弄斧”了。<br /><br />下面是下载条的代码，只要放到第一帧上就行了，改下坐标，长、宽度就可以用了,挺实用的^_^。（来源于网上）<br /><br />stop (); <br />function dr ( nam , de , d , al ) { <br />na = createEmptyMovieClip ( nam , de ); <br />na . lineStyle ( d , 0x000000 , al ); <br />na . _x = 149.0 ; <br />na . _y = 229.0 ; <br />na . lineTo ( 323.9 , 0 ); <br />} <br />//一个画线条的函数<br />onEnterFrame = function () { <br />var a = getBytesTotal (); <br />var b = getBytesLoaded (); <br />//取得下载的数据 <br />if ( b &lt; a ) { <br />dr ( "b1" , 0 , 1 , 20 ); <br />dr ( "b2" , 1 , 1 , 10 ); <br />dr ( "b3" , 2 , 1 , 100 ); <br />b3 . _xscale = b / a * 100 ; <br />//画三条横线，显示下载进度；<br />} else { <br />delete onEnterFrame ; <br />b1 . removeMovieClip (); <br />b2 . removeMovieClip (); <br />b3 . removeMovieClip (); <br />play (); <br />//下载完毕，删除图形和函数； <br />} <br />}; <br /><br />问题四：我想逐次载入多个外部文件，当第一个载入播放完毕后，立即载入第2个，第二个播放完毕后，立即载入第3个 ，……，直到结束。怎么办？ <br /><br />我这边有个点击播放下一个的代码，你看看有用吗？<br />时间轴上：<br />stop();<br />i=0;//定义一个变量i，并且赋初值为0；<br />建一个空帧，命名为：“body1_mymc”再放两个按扭向下翻页的加语法是：<br />on(release){<br />i++;<br />if(i&gt;15){//因为外面这有9张图，当变量大于9的时候，让变量为1，这样能够使加载的图片是连续的，即，每点一次按扭，就换一张图，等到换到第9张图，再点按扭，则循环到第一张图（j1.jpg到j9.jpg,因为没有j0.jpg,如果i=0，则会提示没有找到j0.jpg);<br />i=1;<br />}<br />loadMovie(("j"+i)+".jpg",body1_mymc);//从j1.jpg开始加载图片到影片剪辑mymc中；<br />}<br />向上翻页的代码与这段相反就行了。 <br /><br />本人涉猎不深，希望与大家共勉。</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">adam</font>
						</div>
						<div class="date">
								<font size="2">2005-08-11, 13:28</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">v6是大家共同学习的地方，不用客气！很高兴能于大家交流！<br /><br />其实我认为网站的精髓不在技术，而在于美术，和个人的的设计修养水平，<br /><br />这也就是技术再复杂都能搞定，因为是技术，设计的页面，是不能拿来主意的！<br /><br />我在搜房作设计师，所以偶尔看看技术。但我更美术设计<br /><br />希望大家能在设计一路上互相帮助，互相鼓励！ 共同学习<br /><br />比我强的人多如牛毛啊！！</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">天使之翼</font>
						</div>
						<div class="date">
								<font size="2">2005-08-12, 14:39</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">如果你放在同一个目录下应该是loadMovie("word.swf");<br />没有\\的<br /><br />其他参数不写用默认的就行了<br /><br />恩，问题解决了，去掉\\就行了，还是这个简单 :D 谢谢了！<br /><br />TO：adam<br />我是给公司做的网站（自己的一直想，可没时间 :( ）<br />第一次尝试用FLASH做全站，慢墁摸索中…………</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">xlly</font>
						</div>
						<div class="date">
								<font size="2">2005-08-12, 20:39</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">回答的很认真很具体！虽然懂！但是为你们的精神表示感谢！</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">adam</font>
						</div>
						<div class="date">
								<font size="2">2005-08-14, 16:45</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">好的！我们共同努力！～～～</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">九章</font>
						</div>
						<div class="date">
								<font size="2">2005-08-17, 10:53</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">借个地方跟个贴<br />想请教一个FLASH问题<br />我做的网页..第一页是FLASH.然后我一段FLASH完了以后,<br />最后一帧是ENTER.然后我想点击这个ENTER进入到我网页的一个子页面里..<br />是相对路径的..但是我怎么写代马就是进不去..怎么回事啊? :confused: <br />谢谢谢谢~~各位路过神仙~~</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">19831110</font>
						</div>
						<div class="date">
								<font size="2">2005-08-17, 17:25</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">on(release){<br />getURL("这里是你的文件路径")<br />}</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">九章</font>
						</div>
						<div class="date">
								<font size="2">2005-08-17, 19:57</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">没用~~<br />说我语法错误~~<br /><br />唉~</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">真·大头</font>
						</div>
						<div class="date">
								<font size="2">2005-08-17, 20:50</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">你这个enter做成按钮了吗</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">19831110</font>
						</div>
						<div class="date">
								<font size="2">2005-08-18, 08:02</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">要写在mc或者button上面``</font>
				</div>
		</div>
		<font size="2">
				<hr />
		</font>
		<div class="post">
				<div class="posttop">
						<div class="username">
								<font size="2">※潇洒※</font>
						</div>
						<div class="date">
								<font size="2">2005-08-28, 00:51</font>
						</div>
				</div>
				<div class="posttext">
						<font size="2">嗯. 对. 放到主场景也可.^_^ <br /><br />mcName.onRelease = function(){<br />getURL("url.htm");<br />}</font>
				</div>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/52103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-12 09:04 <a href="http://www.blogjava.net/sl2cj/articles/52103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]在主影片中制作外部载入进度条! </title><link>http://www.blogjava.net/sl2cj/articles/52100.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Mon, 12 Jun 2006 00:59:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/52100.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/52100.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/52100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/52100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/52100.html</trackback:ping><description><![CDATA[
		<span class="gumutitlebold">[原创]在主影片中制作外部载入进度条!</span>
		<div class="gumupostadmintable">
				<li>
				</li>
				<li>
				</li>
				<li>
				</li>
				<li>
				</li>
				<li class="gumuwidth">
				</li>
		</div>
		<br />
		<div style="FLOAT: left; WIDTH: 98%">
				<div style="WIDTH: 100%">
						<div style="FLOAT: right">
								<img src="http://bbs.flash8.net/Themes/default/Images/jf.gif" />
						</div>
				</div>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">[原创]在主影片中制作外部载入进度条！</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-spacerun: yes">
								</span>制作loading虽然是老生常谈的话题，但很多朋友在制作flash网页的时候提过如何将加载外部影片的进度条做在主影片中，我想这是可以简化外部影片制作的原因吧。下面我把制作方法简单给大家介绍一下。（不知道以前有没有朋友发过此类的文章，如有雷同，实属巧合！）<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-spacerun: yes">这个源文件的演示只能看这里了：<a href="http://yatu.512j.com/" target="_blank">http://yatu.512j.com</a></span>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-spacerun: yes">
								</span>开始制作了：<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">（一）按Ctrl+F8新建一个影片剪辑，命名为</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">“</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<font color="#000000">tiao</font>
						</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">”</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">然后选用矩形工具，从场景中心点向右拉出一个条形。<span style="mso-spacerun: yes"></span>如图1</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
								</o:p>
						</span>
						<img src="http://bbs.flash8.net/bbs/UploadFile/2004-8/2004810799244.jpg" border="0" /> (图1)<br /></p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">（二）按Ctrl+F8新建一个影片剪辑，命名为</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">“</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">loading</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">”</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">按Ctrl+L打开库，将刚才制作好的影片剪辑</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">“</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">tiao</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">”</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">从库中拖入场景，取实例名为</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">“</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">jdt</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">”</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">。<span style="mso-spacerun: yes"></span>如图2</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
										<img src="http://bbs.flash8.net/bbs/UploadFile/2004-8/20048107113314.jpg" border="0" />(图2)</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">（三）选择文本工具，在属性面板中选择--动态文本框，拉出一个文本框，变量名为</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">“</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">bfb</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">”</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-spacerun: yes">
								</span>如图3</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
										<img src="http://bbs.flash8.net/bbs/UploadFile/2004-8/200481071232709.jpg" border="0" />(图3)</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">（四）回到主场景，在第50帧插入关键帧，从库中将影片剪辑</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">“</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">loading</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">”</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">拖入主场景，取实例名为</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">“</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">loading</span>
						<span style="FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-ascii-font-family: 宋体">
								<font face="Times New Roman">”</font>
						</span>
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN"> 进度条就做好了。（注意：这里设定影片播放到第50帧时开始加载外部动画，这个根据你的影片设计要求而自定）<span style="mso-spacerun: yes"></span>如图4</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
										<img src="http://bbs.flash8.net/bbs/UploadFile/2004-8/200481071358424.jpg" border="0" />(图4)</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">（五）新建一个层，在第50帧插入关键帧，加入代码。如下：<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">loadMovieNum("mc.swf", 2);//将外部影片mc加载到级层2<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">loading.onEnterFrame = function() { //循环获得进度<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 1">
								</span>a = _level2.getBytesLoaded();//获得已下载的字节数，注意我将外部影片加载到级层2<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 1">
								</span>b = _level2.getBytesTotal(); //获得整个动画字节数<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 1">
								</span>loading.bfb = int(a/b*100) add "%";//获得下载百分比<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 1">
								</span>loading.jdt._xscale = (a/b*100);//获得进度条横向缩放值<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 1">
								</span>if (a == b) { //如果下载完成，取消循环，开始播放下载的动画<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 1">
								</span>
								<span style="mso-tab-count: 1">
								</span>delete loading.onEnterFrame;<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 1">
								</span>
								<span style="mso-tab-count: 1">
								</span>tellTarget ("_level2") {<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 2">
								</span>
								<span style="mso-tab-count: 1">
								</span>play();<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 2">
								</span>}<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-tab-count: 1">
								</span>}<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">};<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">stop();<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">本文源文件下载：[upload=rar]viewFile.asp?ID=149906[/upload]<br /></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-spacerun: yes">
								</span>主动画loading全部完成，这时只差制作外部动画了。在外部动画中注意第一帧加上动作stop();就可以了。如果你要加上一个过度动画也很简单干，我就不细说了，自行设计。<o:p></o:p></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN">
								<span style="mso-spacerun: yes">
								</span>吖！总算写完了，第一次写这种东东，写得比较简单，但希望能给刚接触flash的朋友些许抛砖引玉的作用。</span>
				</p>
		</div>
<img src ="http://www.blogjava.net/sl2cj/aggbug/52100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-12 08:59 <a href="http://www.blogjava.net/sl2cj/articles/52100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用flash关闭计算机</title><link>http://www.blogjava.net/sl2cj/articles/50891.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Tue, 06 Jun 2006 12:20:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50891.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50891.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50891.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50891.html</trackback:ping><description><![CDATA[
		<h3 class="entry-header">用flash关闭计算机</h3>
		<p class="entry-content">fscommand ("exec","rundll"+chr(9)+"user.exe,exitwindows");<br /><br />不适合windows 2k</p>
<img src ="http://www.blogjava.net/sl2cj/aggbug/50891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-06 20:20 <a href="http://www.blogjava.net/sl2cj/articles/50891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>按钮中跳转场景问题</title><link>http://www.blogjava.net/sl2cj/articles/50162.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Sat, 03 Jun 2006 11:30:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/50162.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/50162.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/50162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/50162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/50162.html</trackback:ping><description><![CDATA[on(release)<br />  {<br />    tellTarget("_root")<br />   {<br />      gotoAndPlay("SceneName",1);<br />   }<br /> }<br />首先，直接写gotoAndPlay()肯定是不行的，因为你是在一个mc中的按钮<br />这样写，goto语句作用的是mc，而不是_root<br />但是写成_root.gotoAndPlay("SceneName",1);也不行<br />因为mc.gotoAndPlay();没有带场景参数的函数原型，只有mc.gotoAndPlay(frame);<br />只有单独使用gotoAndPlay()才有gotoAndPlay(scene,frame)的用法<br />所以采取这种折衷的办法<br />用tellTarget()<br />既可以确保作用对象是_root.而非mc,也可以单独使用gotoAndPlay()语句<img src ="http://www.blogjava.net/sl2cj/aggbug/50162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-06-03 19:30 <a href="http://www.blogjava.net/sl2cj/articles/50162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>两个按钮，一个是“暂停”，一个是“播放”，点击暂停音乐停，点播放后，从暂停的位置开始播。 </title><link>http://www.blogjava.net/sl2cj/articles/49057.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Tue, 30 May 2006 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/49057.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/49057.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/49057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/49057.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/49057.html</trackback:ping><description><![CDATA[<table cellspacing="0" cellpadding="0" width="510" align="center" border="0">
    <tbody>
        <tr>
            <td height="6">&nbsp;</td>
        </tr>
        <tr>
            <td class="p14" style="WORD-BREAK: break-all">可以用加载声音文件的方法： <br />第一帧：mysound= new Sound(); <br />mysound.attachSound(声音id名字); <br />ptime = 0; <br />播放按钮as： <br />on(release){ <br />mysound.start(ptime); <br />} <br />暂停按钮as： <br />on(release){ <br />ptime = mysound.position/1000; <br />mysound.stop(); <br />}</td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/sl2cj/aggbug/49057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-30 17:06 <a href="http://www.blogjava.net/sl2cj/articles/49057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Play_btn</title><link>http://www.blogjava.net/sl2cj/articles/48929.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Tue, 30 May 2006 04:25:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/48929.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/48929.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/48929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/48929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/48929.html</trackback:ping><description><![CDATA[myBtn.setStyle("themeColor", "0x00CCFF");
myBtn.setStyle("fontFamily", "Verdana");
myBtn.setStyle("fontSize", "10");
myBtn.setStyle("fontWeight", "bold");
myBtn.setStyle("color", "0x990000");

_global.style.setStyle("themeColor", "0x00CCFF");
_global.style.setStyle("fontFamily", "Verdana");
_global.style.setStyle("fontSize", "10");
_global.style.setStyle("fontWeight", "bold");
_global.style.setStyle("color", "0x990000");

//创建一个CSSStyleDeclaration对象实例
var styleObj = new mx.styles.CSSStyleDeclaration;
//设置styleName属性
styleObj.styleName = "newStyle";
//将样式放到全局样式列表
_global.styles.newStyle = styleObj;
//设置样式属性
styleObj.fontFamily = "Verdana";
styleObj.fontSize = "10";
styleObj.fontWeight = "bold";
styleObj.color = "0x990000";
styleObj.setStyle("themeColor", "0x00CCFF");
//对组件设置样式
CompA.setStyle("styleName", "newStyle");
CompB.setStyle("styleName", "newStyle");
CompC.setStyle("styleName", "newStyle");

//为Button类型的组件定义样式
var btn = _global.styles.Button=new mx.styles.CSSStyleDeclaration();
btn.fontFamily = "Verdana";
btn.fontSize = "12";
btn.fontWeight = "bold";
btn.color = "0x000000";
//为CheckBox类型的组件定义样式
var cb = _global.styles.CheckBox=new mx.styles.CSSStyleDeclaration();
cb.fontFamily = "Tahoma";
cb.fontSize = "12";
cb.fontWeight = "bold";
cb.color = "0x990000";
//为RadioButton类型的组件定义样式
var rb = _global.styles.RadioButton=new mx.styles.CSSStyleDeclaration();
rb.fontFamily = "Arial";
rb.fontSize = "12";
rb.fontWeight = "bold";
rb.color = "0x003399";
<img src ="http://www.blogjava.net/sl2cj/aggbug/48929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-30 12:25 <a href="http://www.blogjava.net/sl2cj/articles/48929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修正Flash MX 2004 UI2组件带来的getNextHighestDepth     2005-07-01 15:08:19 </title><link>http://www.blogjava.net/sl2cj/articles/47706.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Tue, 23 May 2006 12:08:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/47706.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/47706.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/47706.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/47706.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/47706.html</trackback:ping><description><![CDATA[<table style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" height="100%" cellspacing="6" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td valign="top">
            <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
                <tbody>
                    <tr>
                        <td bgcolor="#e6e6e6">
                        <table cellspacing="1" cellpadding="4" width="100%" border="0">
                            <tbody>
                                <tr class="header">
                                    <td width="57%"><strong><img height="11" src="http://www.weni.cn/templates/i7c/images/arrow_dw.gif" width="33" alt="" />修正Flash MX 2004 UI2组件带来的getNextHighestDepth</strong></td>
                                    <td width="43%"><img src="http://www.weni.cn/images/weather/cloudysky.gif" alt="" /> &nbsp;&nbsp;&nbsp;2005-07-01 15:08:19</td>
                                </tr>
                                <tr>
                                    <td align="center" bgcolor="#ffffff" colspan="2">
                                    <table cellspacing="0" cellpadding="0" width="100%" border="0">
                                        <tbody>
                                            <tr>
                                                <td class="smalltxt" onmouseover="this.style.backgroundColor='#F8F8F8'" style="BACKGROUND-COLOR: #ffffff" onmouseout="this.style.backgroundColor='#FFFFFF'" align="center">
                                                <div align="left"><br />Flash MX 2004的 UI2组件带来一个bug 就是：舞台上或者库里存在UI2组件，使用_root.getNextHighestDepth();得出来的值就是大于或者等于1048576了，换句话说getNextHighestDepth()这个命令在这里就是失效了.此时所获得的层的深度就已经超出了Flash层的动态区（0～1048575）。所有存放在超出动态区的MC都是无法用removeMovieClip()删除的. <br />原因就是因为插入UI2组件或者在库中存放有UI2组件的时候,flash会自动在_root里的层动态区里的最高两个层里添加两个看不见的mc:_level0.reserved和_level0.focusManager 用 <br /><span style="COLOR: #0000cd">trace(_root.getInstanceAtDepth(1048575));</span> <br />和 <br /><span style="COLOR: #0000cd">trace(_root.getInstanceAtDepth(1048574));</span> <br />就可以看到. <br />解决方法就是在_root第一帧动作的最前面增加 <br /><span style="COLOR: #0000cd">_root.reserved.swapDepths(0);</span>和 <br /><span style="COLOR: #b886cd">_root.focusManager.swapDepths(1)</span>这两个语句,然后 <br />trace(_root.getNextHighestDepth()); <br />就可以得到是3而不是1048576了. </div>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/sl2cj/aggbug/47706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-23 20:08 <a href="http://www.blogjava.net/sl2cj/articles/47706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash 区块游戏开发</title><link>http://www.blogjava.net/sl2cj/articles/46875.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 18 May 2006 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/46875.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/46875.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/46875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/46875.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/46875.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 为什么用方块？在开始埋头编写代码之前，让我们稍微谈谈区块/方块游戏（tile based games）。为什么要使用方块？是区块游戏更容易制作吗？或许还是他们比基于艺术的游戏(art based games)更复杂？Flash适合区块游戏吗？在很久很久以前，方块技术已经被应用到游戏制作中。那时候，电脑还没有上GHz的cpu，没有上百MB的内存。缓慢的速度、有限的内存意味着，游戏制作者不得不...&nbsp;&nbsp;<a href='http://www.blogjava.net/sl2cj/articles/46875.html'>阅读全文</a><img src ="http://www.blogjava.net/sl2cj/aggbug/46875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-18 18:10 <a href="http://www.blogjava.net/sl2cj/articles/46875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash游戏开发常用函数代码</title><link>http://www.blogjava.net/sl2cj/articles/46861.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 18 May 2006 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/46861.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/46861.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/46861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/46861.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/46861.html</trackback:ping><description><![CDATA[<p><font face="Arial"><strong>■■■对象数组</strong> <br />比如要构建一个有很多属性的数组，简单的可以这样做：<br />2004 代码：<br />var a:Array = new Array(); <br />for (var i = 0; i&lt;10; i++) { <br />&nbsp;&nbsp;&nbsp; a[i] = new Object(); <br />&nbsp;&nbsp;&nbsp; a[i].x = 10; <br />&nbsp;&nbsp;&nbsp; a[i].y = 10*i; <br />&nbsp;&nbsp;&nbsp; a[i].name = &quot;---&quot;; <br />&nbsp;&nbsp;&nbsp; a[i].id = i; <br />&nbsp;&nbsp;&nbsp; // 随便你给什么属性啊。 <br />} <br />////先用局部变量存储对象会更好一点。<br />var a=new Array()<br />for(var i=0;i&lt;10;i++){<br />var ta=new Object();<br />ta.x=10;<br />ta.y=10;<br />ta.name=&quot;n&quot;+i;<br />a.push(ta);<br />}<br />////或者更简便一点的方法：<br />var a=new Array()<br />for(var i=0;i&lt;10;i++){<br />a[i]={x:10,y:10,name:&quot;n&quot;+i}<br />}</font></p>
<p><font face="Arial"></font></p>
<p><font face="Arial"><strong>■■■程序控制角色运动</strong> <br />下面这段代码控制 MovieClip mc 从 (50,50) 横向运动到(100,50) 停止，速度为 5 pixel：<br />mc._x = mc._y=50; <br />mc.onEnterFrame = function() { <br />&nbsp;&nbsp;&nbsp; _x += 5; <br />&nbsp;&nbsp;&nbsp; trace(_x); <br />&nbsp;&nbsp;&nbsp; if (_x == 100) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete (mc.onEnterFrame); <br />&nbsp;&nbsp;&nbsp; } <br />}; </font></p>
<font face="Arial">
<p><br /><strong>■■■精确计时 <br /></strong>我们设定了时间为 60 秒，然后通过 setInterval 来定期（每1000milliseconds）触发一个函数 runTimer。<br />function runTimer 用来计时，当时间到了以后，转去执行 outThere。<br />function outThere 用来处理时间到了以后的动作，不要忘记 clearInterval(intervalID)，停止计时。<br />var time:Number = 60; <br />var intervalID:Number; <br />intervalID = setInterval(runTimer, 1000); <br />function runTimer() { <br />&nbsp;&nbsp;&nbsp; time--; <br />&nbsp;&nbsp;&nbsp; trace(time); <br />&nbsp;&nbsp;&nbsp; if (time == 0) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outThere(); <br />&nbsp;&nbsp;&nbsp; } <br />} <br />function outThere() { <br />&nbsp;&nbsp;&nbsp; // blah blah blah <br />&nbsp;&nbsp;&nbsp; clearInterval(intervalID); <br />} </p>
<p><strong></strong></p>
<p><strong>■■■找到目前最小的一个可用的深度 Depth（来自国外） <br /></strong>针对 Flash Player 6 的：<br />availTopDepth = function () { <br />&nbsp;&nbsp;&nbsp; var allDepths = []; <br />&nbsp;&nbsp;&nbsp; for (var z in _root) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_root[z] instanceof Button || _root[z] instanceof MovieClip || _root[z] instanceof TextField) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allDepths.push(_root[z].getDepth()); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp; if (allDepths.length != 0) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sortAll = function (a, b) { if (ab) {return 1;} else {return 0;}}; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allDepths.sort(sortAll); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (parseInt(allDepths[allDepths.length-1])+1); <br />&nbsp;&nbsp;&nbsp; } <br />}; <br />trace(_root.availTopDepth()); <br />放置一个 MovieClip 在 Stage，再执行这段 Action 就会得到最近的一个可用深度。我们也可以用这个来创建绝对不</p>
<p>会出问题的 MovieClip，比如：<br />_root.createEmptyMovieClip(&quot;mc_name&quot;, availTopDepth());<br />getNextHighestDepth() 以及 getInstanceAtDepth(depth)是 for player 7 的。</p>
<p><strong></strong></p>
<p><strong>■■■鼠标消隐<br /></strong>鼠标消隐之后，右健弹出菜单，鼠标就又出现了，并且一直保留着~<br />完整的解决方法是：在 左健抬起、右健第二次抬起、回车键抬起的时候再次消隐鼠标。<br />完整的方法比较复杂，下面是一个简单的解决方法，可以解决绝大多数的问题：<br />onEnterFrame=function(){<br />&nbsp;if(Key.isDown(1)|| Key.isDown(Key.ENTER)){<br />&nbsp;&nbsp;Mouse.hide();<br />&nbsp;}<br />}</p>
<p><strong></strong></p>
<p><strong>■■■我常用的一个加速度移动的代码<br /></strong>//以下代码放到主场景第一帧<br />stop();<br />_global.a = 5;<br />//移动加速度,越大越慢<br />_global.click_x = 0;<br />//用来记录点击鼠标的位置<br />_global.click_y = 0;<br />_root.onMouseDown = function() {<br />&nbsp;_global.click_x = _root._xmouse;<br />&nbsp;_global.click_y = _root._ymouse;<br />&nbsp;//me是受控mc的instance name<br />&nbsp;me.onEnterFrame = function() {<br />&nbsp;&nbsp;if (Math.abs(_global.click_x-me._x)&lt;2 &amp;&amp; Math.abs(_global.click_y-me._y)&lt;2) {<br />&nbsp;&nbsp;&nbsp;//如果已经基本移到了鼠标点过的位置就取消这个事件句柄的响应程序<br />&nbsp;&nbsp;&nbsp;delete (this.onEnterFrame);<br />&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;} else {<br />&nbsp;&nbsp;&nbsp;//控制移动<br />&nbsp;&nbsp;&nbsp;me._x += (_global.click_x-me._x)/_global.a;<br />&nbsp;&nbsp;&nbsp;me._y += (_global.click_y-me._y)/_global.a;<br />&nbsp;&nbsp;}<br />&nbsp;};<br />};<br />//////以下部分可选<br />//a_v是个可以输入的文本框,用来输入加速度,即可以自定义速度,方便调试<br />a_v.onChanged = function() {<br />&nbsp;if (a_v.text == &quot;&quot; || Number(a_v.text)&gt;1000 || Number(a_v.text)&lt;0) {<br />&nbsp;&nbsp;//default value<br />&nbsp;&nbsp;a_v.text = 5;<br />&nbsp;} else {<br />&nbsp;&nbsp;_global.a = Number(a_v.text) ? Number(a_v.text) : 5;<br />&nbsp;&nbsp;//trace(_global.a);<br />&nbsp;}<br />};</p>
<p>&nbsp;</p>
<p><strong></strong></p>
<p><strong>■■■随机输出1到100而不从复的语句~~~ <br /></strong>seq = new Array(100);<br />pArray = new Array(100);<br />function makeRandom() {<br />&nbsp;for (i=1; i&lt;=100; i++) {<br />&nbsp;&nbsp;seq[i] = &quot;A&quot;;<br />&nbsp;}<br />}<br />function mRandom() {<br />&nbsp;while (true) {<br />&nbsp;&nbsp;n = int(random(100))+1;<br />&nbsp;&nbsp;if (seq[n] == &quot;A&quot;) {<br />&nbsp;&nbsp;&nbsp;seq[n] = &quot;0&quot;;<br />&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;return (n);<br />}<br />function rArray() {<br />&nbsp;for (i=1; i&lt;=100; i++) {<br />&nbsp;&nbsp;pArray[i] = mRandom();<br />&nbsp;&nbsp;trace(pArray[i]);<br />&nbsp;}<br />}<br />stop();</p>
<p><strong></strong></p>
<p><strong>■■■偷梁换柱～～～ <br /></strong>我们可以用这样一个技巧，在某些函数外部加一些东西而不需要了解函数的代码～～<br />比如，假如当前有很多mc 覆盖了onEnterFrame函数，我们可以这样了解那些在_root下的mc 的onEnterFrame函</p>
<p>数是以什么顺序执行的：<br />代码:<br />for(var i in _root){<br />&nbsp;&nbsp;&nbsp; if(_root[i].onEnterFrame != null){//如果这个Object实现了onEnterFrame接口的话<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _root[i].oldFunc&nbsp; = _root[i].onEnterFrame;//首先保存原来的onEnterFrame的句柄<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _root[i].onEnterFrame = function(){//然后开始替换了～～加上一层壳～～<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; trace(this+ &quot;: onEnterFrame Called.&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.oldFunc();//我们用保留的句柄调用原来的函数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; trace(this+ &quot;: onEnterFrame Returned.&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}<br />如果要取消这些附加的操作：<br />代码:<br />for(var i in _root){<br />&nbsp;&nbsp;&nbsp; if(_root[i].oldFunc!= null){//如果发现改过得痕迹<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _root[i].onEnterFrame = _root[i].oldFunc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete(oldFunc);<br />&nbsp;&nbsp;&nbsp; }<br />}<br />呵呵这些操作的关键在于 flash里面的引用机制:<br />所有函数名都是引用，而函数本身是浮在数据的海洋里面的。如果没有任何变量引用他，他就会被回收。如果有，</p>
<p>他就不会被回收。所以有着样一个有趣的事情：delete函数不会删掉任何东西，除了要求删掉的那个名字：（和java</p>
<p>机制相似，而和C不同）</p>
<p>a= function(){trace(&quot;Function a called&quot;);}<br />b=a;<br />delete(a);//除了a这个名字被删掉以外，没有任何事情发生<br />b();</p>
<p>函数通过this得到其调用者的实例。</p>
<p>&nbsp;</p>
<p><strong>■■■MovieClipPlus.as<br /></strong>定义了一些简单的MC操作<br />//画点：由于flash没有画点，那我们就画短线<br />MovieClip.prototype.point = OxMovieClipPoint;<br />function OxMovieClipPoint(x, y) {<br />&nbsp;this.moveTo(x, y);<br />&nbsp;this.lineTo(x+1, y);<br />}<br />//画矩形,左上角x1,y1 右下角x2,y2, 颜色rgb， 不透明度alpha<br />MovieClip.prototype.rect = OxMovieClipRect;<br />function OxMovieClipRect(x1, y1, x2, y2, rgb, alpha) {<br />&nbsp;this.beginFill(rgb, alpha);<br />&nbsp;this.moveTo(x1, y1);<br />&nbsp;this.lineTo(x1, y2);<br />&nbsp;this.lineTo(x2, y2);<br />&nbsp;this.lineTo(x2, y1);<br />&nbsp;this.lineTo(x1, y1);<br />&nbsp;this.endFill();<br />}<br />//画圆:这么bt的冬冬当然不是我写的，作者素Jody Keating<br />//圆心x,y ，半径r<br />MovieClip.prototype.circle = OxMovieClipCircle;<br />function OxMovieClipCircle(x, y, r) {<br />&nbsp;var a = r*0.414213562;<br />&nbsp;var b = r*0.707106781;<br />&nbsp;this.moveTo(x+r, y);<br />&nbsp;this.curveTo(x+r, y-a, x+b, y-b);<br />&nbsp;this.curveTo(x+a, y-r, x, y-r);<br />&nbsp;this.curveTo(x-a, y-r, x-b, y-b);<br />&nbsp;this.curveTo(x-r, y-a, x-r, y);<br />&nbsp;this.curveTo(x-r, y+a, x-b, y+b);<br />&nbsp;this.curveTo(x-a, y+r, x, y+r);<br />&nbsp;this.curveTo(x+a, y+r, x+b, y+b);<br />&nbsp;this.curveTo(x+r, y+a, x+r, y);<br />}</p>
<p><strong></strong></p>
<p><strong>■■■两点间的直线移动<br /></strong>var s = 15;<br />_root.onMouseDown = function() {<br />&nbsp;var oldM_x = _root._xmouse;<br />&nbsp;var oldM_y = _root._ymouse;<br />&nbsp;ax = aa._x;<br />&nbsp;ay = aa._y;<br />&nbsp;dis = Math.sqrt((oldM_x-ax)*(oldM_x-ax)+(oldM_y-ay)*(oldM_y-ay));<br />&nbsp;xa = (oldM_x-ax)/dis;<br />&nbsp;ya = (oldM_y-ay)/dis;<br />&nbsp;amove();<br />};<br />function amove() {<br />&nbsp;onEnterFrame = function () {<br />&nbsp;&nbsp;aa._x += s*xa;<br />&nbsp;&nbsp;aa._y += s*ya;<br />&nbsp;&nbsp;if (Math.sqrt((aa._x-ax)*(aa._x-ax)+(aa._y-ay)*(aa._y-ay))&gt;dis) {<br />&nbsp;&nbsp;&nbsp;delete onEnterFrame;<br />&nbsp;&nbsp;}<br />&nbsp;};<br />}</p>
<p><strong></strong></p>
<p><strong>■■■计算两个对象之间/两点之间的距离(注册点)<br /></strong>function getDistanceOf(target1, target2, x2, y2) {<br />&nbsp;if (arguments.length == 4) {<br />&nbsp;&nbsp;dx = x2-target1;<br />&nbsp;&nbsp;dy = y2-target2;<br />&nbsp;} else if (arguments.length == 2) {<br />&nbsp;&nbsp;dx = target2._x-target1._x;<br />&nbsp;&nbsp;dy = target2._y-target1._y;<br />&nbsp;}<br />&nbsp;return Math.sqrt(dx*dx+dy*dy);<br />}<br />//Arguments 对象是一个数组，其中包含作为参数传递给任何函数的值。每次在动作脚本中调用函数时，都会为该函</p>
<p>数自动创建 Arguments 对象。同时还会创建一个局部变量 arguments，使您可引用 arguments 对象。 </p>
<p><strong></strong></p>
<p><strong>■■■让播放的MC暂停一段时间</strong> <br />function pausePlay(sec) { <br />&nbsp;&nbsp; pfunc = function () { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.play(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clearInterval(this.pint); <br />&nbsp;&nbsp; } <br />&nbsp;&nbsp; stop(); <br />&nbsp;&nbsp; this.pint = setInterval(this, &quot;pfunc&quot;, sec*1000); <br />} <br />//这样调用.sec是暂停的时间,单位是秒. <br />pausePlay(2); </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>■■■onHitTest(target),自己写的一个MC事件,当该MC与指定的MC hitTest的时候触发事件.其实也没什么特别的地方,一样也是用setInterval来实现<br /></strong>stop(); <br />MovieClip.prototype.listen = function(target) { <br />&nbsp;&nbsp;&nbsp; if (this.isHiting == undefined) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.isHiting = this.hitTest(target); <br />&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp; if (this.hitTest(target)) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (this.isHiting == false) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.broadcastMessage(&quot;onHitTest&quot;, this, target);//广播事件,给事件传递this和target两个参数 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.isHiting = true; <br />&nbsp;&nbsp;&nbsp; } else { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.isHiting = false; <br />&nbsp;&nbsp;&nbsp; } <br />};//为MovieClip添加域成员listen成员,用于监视当前对象与目标是否碰撞 <br />MovieClip.prototype.watch = function(target) { <br />&nbsp;&nbsp;&nbsp; this.timer = setInterval(this, &quot;listen&quot;, 50, target); <br />};//以每50毫秒检测一次的速度来检测是否碰撞 <br />MovieClip.prototype.unWatch = function() { <br />&nbsp;&nbsp;&nbsp; clearInterval(this.timer); <br />};//停止对对象的监视 <br />ASBroadcaster.initialize(MovieClip.prototype);//初始化MovieClip原型为事件源 </p>
<p>//下面是调用的示例 </p>
<p>//假设有两个MovieClip,左边ball,右边wall,让ball不断往wall移动,同时监视wall,一旦击中触发事件onHitTest </p>
<p>ball.onEnterFrame = function() { <br />&nbsp;&nbsp;&nbsp; this._x += 5; <br />};//让ball不断往右方移动工 <br />myListener = new Object(); <br />myListener.onHitTest = function(source,target){ <br />&nbsp;&nbsp;&nbsp; trace(&quot;The &quot; + source._name + &quot; hit &quot; + target._name + &quot;.&quot;); <br />}; <br />ball.addListener(myListener);//创建监听员并注册给ball <br />ball.watch(wall);//让ball监视wall </p>
<p>&nbsp;</p>
<p><strong>■■■MD5 32位码的FLASH算法</strong> <br />//-----------<br />function md5(s) {<br />&nbsp;return binl2hex(core_md5(str2binl(s), s.length*strsize));<br />}<br />function core_md5(x, len) {<br />&nbsp;x[len &gt;&gt; 5] = (x[len &gt;&gt; 5]) | (128 &lt;&lt; len%32);<br />&nbsp;x[(((len+64) &gt;&gt;&gt; 9) &lt;&lt; 4)+14] = len;<br />&nbsp;var a = 1732584193;<br />&nbsp;var b = -271733879;<br />&nbsp;var c = -1732584194;<br />&nbsp;var d = 271733878;<br />&nbsp;var i = 0;<br />&nbsp;while (i&nbsp;&nbsp;var olda = a;<br />&nbsp;&nbsp;var oldb = b;<br />&nbsp;&nbsp;var oldc = c;<br />&nbsp;&nbsp;var oldd = d;<br />&nbsp;&nbsp;a = md5_ff(a, b, c, d, x[i+0], 7, -680876936);<br />&nbsp;&nbsp;d = md5_ff(d, a, b, c, x[i+1], 12, -389564586);<br />&nbsp;&nbsp;c = md5_ff(c, d, a, b, x[i+2], 17, 606105819);<br />&nbsp;&nbsp;b = md5_ff(b, c, d, a, x[i+3], 22, -1044525330);<br />&nbsp;&nbsp;a = md5_ff(a, b, c, d, x[i+4], 7, -176418897);<br />&nbsp;&nbsp;d = md5_ff(d, a, b, c, x[i+5], 12, 1200080426);<br />&nbsp;&nbsp;c = md5_ff(c, d, a, b, x[i+6], 17, -1473231341);<br />&nbsp;&nbsp;b = md5_ff(b, c, d, a, x[i+7], 22, -45705983);<br />&nbsp;&nbsp;a = md5_ff(a, b, c, d, x[i+8], 7, 1770035416);<br />&nbsp;&nbsp;d = md5_ff(d, a, b, c, x[i+9], 12, -1958414417);<br />&nbsp;&nbsp;c = md5_ff(c, d, a, b, x[i+10], 17, -42063);<br />&nbsp;&nbsp;b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);<br />&nbsp;&nbsp;a = md5_ff(a, b, c, d, x[i+12], 7, 1804603682);<br />&nbsp;&nbsp;d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);<br />&nbsp;&nbsp;c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);<br />&nbsp;&nbsp;b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);<br />&nbsp;&nbsp;a = md5_gg(a, b, c, d, x[i+1], 5, -165796510);<br />&nbsp;&nbsp;d = md5_gg(d, a, b, c, x[i+6], 9, -1069501632);<br />&nbsp;&nbsp;c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);<br />&nbsp;&nbsp;b = md5_gg(b, c, d, a, x[i+0], 20, -373897302);<br />&nbsp;&nbsp;a = md5_gg(a, b, c, d, x[i+5], 5, -701558691);<br />&nbsp;&nbsp;d = md5_gg(d, a, b, c, x[i+10], 9, 38016083);<br />&nbsp;&nbsp;c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);<br />&nbsp;&nbsp;b = md5_gg(b, c, d, a, x[i+4], 20, -405537848);<br />&nbsp;&nbsp;a = md5_gg(a, b, c, d, x[i+9], 5, 568446438);<br />&nbsp;&nbsp;d = md5_gg(d, a, b, c, x[i+14], 9, -1019803690);<br />&nbsp;&nbsp;c = md5_gg(c, d, a, b, x[i+3], 14, -187363961);<br />&nbsp;&nbsp;b = md5_gg(b, c, d, a, x[i+8], 20, 1163531501);<br />&nbsp;&nbsp;a = md5_gg(a, b, c, d, x[i+13], 5, -1444681467);<br />&nbsp;&nbsp;d = md5_gg(d, a, b, c, x[i+2], 9, -51403784);<br />&nbsp;&nbsp;c = md5_gg(c, d, a, b, x[i+7], 14, 1735328473);<br />&nbsp;&nbsp;b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);<br />&nbsp;&nbsp;a = md5_hh(a, b, c, d, x[i+5], 4, -378558);<br />&nbsp;&nbsp;d = md5_hh(d, a, b, c, x[i+8], 11, -2022574463);<br />&nbsp;&nbsp;c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);<br />&nbsp;&nbsp;b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);<br />&nbsp;&nbsp;a = md5_hh(a, b, c, d, x[i+1], 4, -1530992060);<br />&nbsp;&nbsp;d = md5_hh(d, a, b, c, x[i+4], 11, 1272893353);<br />&nbsp;&nbsp;c = md5_hh(c, d, a, b, x[i+7], 16, -155497632);<br />&nbsp;&nbsp;b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);<br />&nbsp;&nbsp;a = md5_hh(a, b, c, d, x[i+13], 4, 681279174);<br />&nbsp;&nbsp;d = md5_hh(d, a, b, c, x[i+0], 11, -358537222);<br />&nbsp;&nbsp;c = md5_hh(c, d, a, b, x[i+3], 16, -722521979);<br />&nbsp;&nbsp;b = md5_hh(b, c, d, a, x[i+6], 23, 76029189);<br />&nbsp;&nbsp;a = md5_hh(a, b, c, d, x[i+9], 4, -640364487);<br />&nbsp;&nbsp;d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);<br />&nbsp;&nbsp;c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);<br />&nbsp;&nbsp;b = md5_hh(b, c, d, a, x[i+2], 23, -995338651);<br />&nbsp;&nbsp;a = md5_ii(a, b, c, d, x[i+0], 6, -198630844);<br />&nbsp;&nbsp;d = md5_ii(d, a, b, c, x[i+7], 10, 1126891415);<br />&nbsp;&nbsp;c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);<br />&nbsp;&nbsp;b = md5_ii(b, c, d, a, x[i+5], 21, -57434055);<br />&nbsp;&nbsp;a = md5_ii(a, b, c, d, x[i+12], 6, 1700485571);<br />&nbsp;&nbsp;d = md5_ii(d, a, b, c, x[i+3], 10, -1894986606);<br />&nbsp;&nbsp;c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);<br />&nbsp;&nbsp;b = md5_ii(b, c, d, a, x[i+1], 21, -2054922799);<br />&nbsp;&nbsp;a = md5_ii(a, b, c, d, x[i+8], 6, 1873313359);<br />&nbsp;&nbsp;d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);<br />&nbsp;&nbsp;c = md5_ii(c, d, a, b, x[i+6], 15, -1560198380);<br />&nbsp;&nbsp;b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);<br />&nbsp;&nbsp;a = md5_ii(a, b, c, d, x[i+4], 6, -145523070);<br />&nbsp;&nbsp;d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);<br />&nbsp;&nbsp;c = md5_ii(c, d, a, b, x[i+2], 15, 718787259);<br />&nbsp;&nbsp;b = md5_ii(b, c, d, a, x[i+9], 21, -343485551);<br />&nbsp;&nbsp;a = safe_add(a, olda);<br />&nbsp;&nbsp;b = safe_add(b, oldb);<br />&nbsp;&nbsp;c = safe_add(c, oldc);<br />&nbsp;&nbsp;d = safe_add(d, oldd);<br />&nbsp;&nbsp;i = i+16;<br />&nbsp;}<br />&nbsp;return Array(a, b, c, d);<br />}<br />function md5_cmn(q, a, b, x, s, t) {<br />&nbsp;return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);<br />}<br />function md5_ff(a, b, c, d, x, s, t) {<br />&nbsp;return md5_cmn((b &amp; c) | ((~b) &amp; d), a, b, x, s, t);<br />}<br />function md5_gg(a, b, c, d, x, s, t) {<br />&nbsp;return md5_cmn((b &amp; d) | (c &amp; (~d)), a, b, x, s, t);<br />}<br />function md5_hh(a, b, c, d, x, s, t) {<br />&nbsp;return md5_cmn((b ^ c) ^ d, a, b, x, s, t);<br />}<br />function md5_ii(a, b, c, d, x, s, t) {<br />&nbsp;return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);<br />}<br />function safe_add(x, y) {<br />&nbsp;var lsw = (x &amp; 65535)+(y &amp; 65535);<br />&nbsp;var msw = ((x &gt;&gt; 16)+(y &gt;&gt; 16))+(lsw &gt;&gt; 16);<br />&nbsp;return (msw &lt;&lt; 16) | (lsw &amp; 65535);<br />}<br />function bit_rol(num, cnt) {<br />&nbsp;return (num &lt;&lt; cnt) | (num &gt;&gt;&gt; (32-cnt));<br />}<br />function str2binl(str) {<br />&nbsp;var bin = Array();<br />&nbsp;var mask = (1 &lt;&lt; strsize)-1;<br />&nbsp;var i = 0;<br />&nbsp;while (i&lt;(str.length*strsize)) {<br />&nbsp;&nbsp;bin[i &gt;&gt; 5] = (bin[i &gt;&gt; 5]) | ((str.charCodeAt(i/strsize) &amp; mask) &lt;&lt; i%32);<br />&nbsp;&nbsp;i = i+strsize;<br />&nbsp;}<br />&nbsp;return bin;<br />}<br />function binl2hex(binarray) {<br />&nbsp;if (hexcase) {<br />&nbsp;} else {<br />&nbsp;}<br />&nbsp;var hex_tab = &quot;0123456789abcdef&quot;;<br />&nbsp;var str = &quot;&quot;;<br />&nbsp;var i = 0;<br />&nbsp;while (i&lt;(binarray.length*4)) {<br />&nbsp;&nbsp;str = str+(hex_tab.charAt(((binarray[i &gt;&gt; 2]) &gt;&gt; ((i%4*8)+4)) &amp; 15)+hex_tab.charAt(((binarray[i </p>
<p>&gt;&gt; 2]) &gt;&gt; (i%4*8)) &amp; 15));<br />&nbsp;&nbsp;i++;<br />&nbsp;}<br />&nbsp;return str;<br />}<br />var hexcase = 0;<br />var strsize = 8;<br />//--------以上不用修改，<br />b = md5(&quot;xx&quot;);<br />//xx可设为任意字符<br />s = b.toUpperCase();<br />//转换成大写<br />trace(b);<br />trace(s);</p>
<p>&nbsp;</p>
<p><strong>■■■发点缓动函数<br /></strong>Math.linearTween = function(t, b, c, d) {<br />&nbsp;return c*t/d+b;<br />};<br />//线性运动函数<br />Math.easeInQuad = function(t, b, c, d) {<br />&nbsp;return c*(t /= d)*t+b;<br />};<br />//二次缓入函数<br />Math.easeOutQuad = function(t, b, c, d) {<br />&nbsp;return -c*(t /= d)*(t-2)+b;<br />};<br />//二次缓出函数<br />Math.easeINOutQuad = function(t, b, c, d) {<br />&nbsp;if ((t /= d/2)&lt;1) {<br />&nbsp;&nbsp;return c/2*t*t+b;<br />&nbsp;}<br />&nbsp;return -c/2*((--t)*(t-2)-1)+b;<br />};<br />//二次缓入缓出函数<br />Math.easeInCubic = function(t, b, c, d) {<br />&nbsp;return c*Math.pow(t/d, 3)+b;<br />};<br />//三次缓入函数<br />Math.easeOutCubic = function(t, b, c, d) {<br />&nbsp;return c*(Math.pow(t/d-1, 3)+1)+b;<br />};<br />//三次缓出函数<br />Math.easeINOutCubic = function(t, b, c, d) {<br />&nbsp;if ((t /= d/2)&lt;1) {<br />&nbsp;&nbsp;return c/2*Math.pow(t, 3)+b;<br />&nbsp;}<br />&nbsp;return c/2*(Math.pow(t-2, 3)+2)+b;<br />};<br />//三次缓入缓出函数<br />Math.easeInQuart = function(t, b, c, d) {<br />&nbsp;return c*Math.pow(t/d, 4)+b;<br />};<br />//四次缓入函数<br />Math.easeOutQuart = function(t, b, c, d) {<br />&nbsp;return -c*(Math.pow(t/d-1, 4)-1)+b;<br />};<br />//四次缓出函数<br />Math.easeINOutQuart = function(t, b, c, d) {<br />&nbsp;if ((t /= d/2)&lt;1) {<br />&nbsp;&nbsp;return c/2*Math.pow(t, 4)+b;<br />&nbsp;}<br />&nbsp;return -c/2*(Math.pow(t-2, 4)-2)+b;<br />};<br />//四次缓入缓出函数<br />Math.easeInQuint = function(t, b, c, d) {<br />&nbsp;return c*Math.pow(t/d, 5)+b;<br />};<br />//五次缓入函数<br />Math.easeOutQuint = function(t, b, c, d) {<br />&nbsp;return c*(Math.pow(t/d-1, 5)+1)+b;<br />};<br />//五次缓出函数<br />Math.easeINOutQuint = function(t, b, c, d) {<br />&nbsp;if ((t /= d/2)&lt;1) {<br />&nbsp;&nbsp;return c/2*Math.pow(t, 5)+b;<br />&nbsp;}<br />&nbsp;return c/2*(Math.pow(t-2, 5)+2)+b;<br />};<br />//五次缓入缓出函数<br />Math.easeInSine = function(t, b, c, d) {<br />&nbsp;return c*(1-Math.cos(t/d*(Math.PI/2)))+b;<br />};<br />//正弦缓出函数<br />Math.easeOutSine = function(t, b, c, d) {<br />&nbsp;return c*Math.sin(t/d*(Math.PI/2))+b;<br />};<br />//正弦缓出函数<br />Math.easeINOutSine = function(t, b, c, d) {<br />&nbsp;return c/2*(1-Math.cos(Math.PI*t/d))+b;<br />};<br />//正弦缓入缓出函数<br />Math.easeInExpo = function(t, b, c, d) {<br />&nbsp;return c*Math.pow(2, 10*(t/d-1))+b;<br />};<br />//指数缓入函数<br />Math.easeOutExpo = function(t, b, c, d) {<br />&nbsp;return c*(-Math.pow(2, -10*t/d)+1)+b;<br />};<br />//指数缓出函数<br />Math.easeINOutExpo = function(t, b, c, d) {<br />&nbsp;if ((t /= d/2)&lt;1) {<br />&nbsp;&nbsp;return c/2*Math.pow(2, 10*(t-1))+b;<br />&nbsp;}<br />&nbsp;return c/2*(-Math.pow(2, -10*--t)+2)+b;<br />};<br />//指数缓入缓出函数<br />Math.easeInCirc = function(t, b, c, d) {<br />&nbsp;return c*(1-Math.sqrt(1-(t /= d)*t))+b;<br />};<br />//圆形缓入函数<br />Math.easeOutCirc = function(t, b, c, d) {<br />&nbsp;return c*Math.sqrt(1-(t=t/d-1)*t)+b;<br />};<br />//圆形缓出函数<br />Math.easeINOutCirc = function(t, b, c, d) {<br />&nbsp;if ((t /= d/2)&lt;1) {<br />&nbsp;&nbsp;return c/2*(1-Math.sqrt(1-t*t))+b;<br />&nbsp;}<br />&nbsp;return c/2*(Math.sqrt(1-(t -= 2)*t)+1)+b;<br />};<br />//圆形缓入缓出函数</p>
</font><img src ="http://www.blogjava.net/sl2cj/aggbug/46861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-18 17:12 <a href="http://www.blogjava.net/sl2cj/articles/46861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Movie Clip 的深度问题</title><link>http://www.blogjava.net/sl2cj/articles/46542.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Wed, 17 May 2006 01:41:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/46542.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/46542.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/46542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/46542.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/46542.html</trackback:ping><description><![CDATA[<p>&ldquo;朝闻道夕死可矣&rdquo;，最近越来越深的体会了这句话。人就是为了追求真理而活，一旦悟透了真理，人生也就没有任何遗憾了。这样的心情很符合解决技术问题后的那种满足感。</p>
<p>最近遇到了一个不大不小的问题，发现手动拖到时间轴上的 mc 不能在脚本中删除，一时搞不懂是为什么。后来了解到 mc 的深度是有学问的，一共可分为 3 个大块，分别是：</p>
<p>1、时间轴区（深度范围 -16 384 ~ -1）</p>
<p>这个区域是用来放置在设计器中生成的那些元素，这个区域里的 mc 是不能用脚本删除的。但是脚本创建的 mc 可以制定到这个深度范围中，这样也就不能删除了。</p>
<p>这就可以解答好多现象，比如脚本创建的 mc 一般总会在设计器创建的之上，因为你死也不会想到深度制定在小于 -16 384? 并且大于???? -16 390（低于 -16 38x ?的深度不存在，不会被创建）的范围内才可以放到设计器创建的 mc 下面。并且我前面的问题也就不难解释了。</p>
<p>解决删除问题也不难，只要把那个深陷泥沼的 mc 换出来，再杀掉就 ok 了。具体点就是先是用 swapDepths() 方法来个乾坤大挪移，再用 removeMovieClip() 接上一际独孤九剑，于是世界清静了。</p>
<p>（注：在用户卡片的制作中我用到了 swapDepths()，用来解决单击后的卡片会放置在最上层。）</p>
<p>现在想想，以前做的那些 Banner 甚至没有 0 的突破，所有 mc 的 Depth 都是负数，呵呵。</p>
<p>2、动态区（深度范围 0 ~ 1 048 575）</p>
<p>这是个脚本可以肆意妄为的世界，可以直接使用独孤九剑决定任何 mc 的生死，不用费时费力的乾坤大挪移了。</p>
<p>3、保留区（深度范围 1 048 576 ~ 2 130 690 045）</p>
<p>我想这个区域的存在目的就是为了确保深度超过 1 048 575 后，创建的 mc 仍然有地方储存。要想删除这区域里的 mc 的话，还是要先拖到动态区去，然后是砍头还是腰斩随便你。（把动态区形容的有点像刑场，呵呵）</p>
<p>这就是 Flash 深度框架的所以然，总体上感觉还是挺牛的，用好了就可以呼风唤雨，用不好就只能到处受气。</p>
<p>总之就是这么点事，把以后会忘，所以记在这里。忘了解决的方法是小，忘了闻道时的喜悦就遗憾至极了。</p><img src ="http://www.blogjava.net/sl2cj/aggbug/46542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-17 09:41 <a href="http://www.blogjava.net/sl2cj/articles/46542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己动手制作手机Flash主题动画</title><link>http://www.blogjava.net/sl2cj/articles/45679.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Thu, 11 May 2006 08:57:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/45679.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/45679.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/45679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/45679.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/45679.html</trackback:ping><description><![CDATA[<p align="center"><strong><font color="#212121" size="6">自己动手制作手机Flash主题动画</font></strong></p>
<p align="center"><strong><font size="2"><em>原文地址:</em></font></strong><a href="http://soft.yesky.com/SoftChannel/72351185150935040/20050316/1922681.shtml" target="_blank">http://soft.yesky.com/SoftChannel/72351185150935040/20050316/1922681.shtml</a></p>
<p align="left">
<table cellspacing="0" cellpadding="0" width="590" align="center" border="0">
    <tbody>
        <tr>
            <td><span class="f14"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/image20010518/263861.jpg" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" align="right" border="0" alt="" /><font size="2">　　现在智能手机已成为时下数码领域里的热门话题，很多数码发烧友都用上了高端智能手机并致力于应用方面的研究。顺应热潮，Macromedia公司也开发了在手机上应用的Flash动画播放器：Flash Lite 1.1。最初这个播放器只能应用于i-mode手持设备，后来索爱、诺基亚品牌的一些手机也能使用这个播放器了。在今年市面上已经可以看到捆绑了Flash Lite 1.1的手机，尤其是三星手机和Macromedia达成了合作协议，全面支持Flash Lite 1.1。 </font>
            <p>&nbsp;</p>
            <p align="left"><font size="2">　　既然手机上能够使用Flash动画主题，很多喜欢Flash的朋友一定会问，我们该怎么制作呢？Flash MX Pro 2004提供了一些现成的工具用来制作手机上的Flash动画主题，今天我们就一起用Flash MX Pro 2004制作一个简单的手机动画主题，从而了解基本流程和方法。</font></p>
            <p align="left"><strong><font size="2">　　<strong><font color="#990000">背景知识：Flash Lite 的应用条件</font></strong></font></strong></p>
            <p align="left"><font size="2">　　Flash Lite是类似于Flash 4.0的手机用程序，为什么是Flash4这么早的版本呢？毕竟智能手机系统的CPU不能和电脑相比，要在手机上畅快的运行Flash动画必须对SWF文件有所限制，限制的内容主要在于：文件体积不超过20k，不能使用手机不支持的字体，不支持复杂的ActionScript，动画循环，过多的层、元素，不要使用图形元素以及透明效果等等。由于上述的种种条件，用Flash MX Pro 2004创作的Flash动画最好使用Tween组合、关键帧动画、使用手机内置的字体、优化路径等等。<br /><br /><strong>　　<strong><font color="#990000">手机Flash主题动画制作</font></strong></strong>&nbsp; </font></p>
            <p align="left"><strong><font size="2">　　一、准备手机主题素材</font></strong></p>
            <p align="left"><font size="2">　　根据要求设计的手机动作非常简单，因此我们可使用画面丰富的图片组合创作简单的动画效果。素材图片的大小要根据设计的手机主题的机型来决定，打开Flash MX Pro 2004，选择从模板新建一个文件，可看到移动设备模板选项（图1）。</font></p>
            <p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-01.gif" width="450" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图1</font></p>
            <p align="left"><font size="2">　　移动设备模板提供了多种品牌手机的模板，这些都是直接能够在手机上运行的（Macromedia与其达成的合作），我们选择市面上比较普遍的诺基亚7650手机模板，确定后返回Flash编辑的主场景可以看到手机的外观，在层面板上还可看到动画都要基于模板定义的尺寸（图2），诺基亚7650的显示屏尺寸为176*208像素。</font></p>
            <p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-02.gif" width="374" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图2</font></p>
            <p align="left"><font size="2">　　 这样我们需要准备的是一张作为主题背景的176*208像素的图片，从网上搜索到一张漂亮的图后可以使用Fireworks工具编辑或直接进行剪裁（图3）。</font></p>
            <p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-03.jpg" width="450" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图3</font></p>
            <p align="left"><font size="2">　　下面是要准备手机主题动画上的图标，如电话、聊天、游戏等等手机各个功能的图标（图4），把这几个图标单独制作成小图，然后再用Fireworks在原图的基础上进行细微的修改，制作鼠标划过的效果。</font></p>
            <p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-04.gif" width="138" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图4<br /></font></p>
            </span></td>
        </tr>
    </tbody>
</table>
<span class="f14">
<p align="left"><strong><font size="2">　　二、手机主题动画制作</font></strong></p>
<p align="left"><font size="2">　　把素材导入到Flash MX Pro 2004的库中，首先把背景图片放到主场景中，将图片的位置调整为0*0（图5）。</font></p>
<p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-05.jpg" width="449" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图5</font></p>
<p align="left"><font size="2">　　下面分别建立几个按钮元素，把每个图标制作成按钮用事先准备好的两种效果组合起来成为鼠标划过的动画效果（图6）。</font></p>
<p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-06.jpg" width="430" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图6</font></p>
<p align="left"><font size="2">　　把这几个按钮拖到主场景中排列好，然后使用文字工具分别给这几个工具添加中文的文字描述，注意字体使用手机字体宋体（图7）。</font></p>
<p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-07.jpg" width="450" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图7</font></p>
<p align="left"><font size="2">　　最后给每个功能添加绝对路径地址，让用户点击主题上的这些功能按钮即可进入手机上相应功能的界面，如电话簿在智能手机的E盘上，则在Flash中给按钮添加一个鼠标释放后跳转到&ldquo;Z:/System/Apps/Phonebook/Phonebook.app&rdquo;的ActionScript脚本（图8）。</font></p>
<p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-08.jpg" width="335" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图8</font></p>
<p align="left"><font size="2">　　现在一个简单的诺基亚7650手机的Flash主题模式就完成了，下面选择&ldquo;文件&rdquo;菜单下的&ldquo;导出&rdquo;功能导出SWF文件，在导出对话框中注意导出的版本是&ldquo;Flash Lite1.0&rdquo;（使用移动设备模板设计的动画默认导出该版本）（图9）。</font></p>
<p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-09.jpg" width="322" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图9</font></p>
<p align="left"><font size="2">　　我们在电脑上观看这个主题动画是看不到编辑时诺基亚7650的手机外壳的，只是一个尺寸为176*208像素的动画，注意最后生成的SWF不能大于20kb，本例的动画体积为14k比较合适。</font></p>
<p align="left">&nbsp;Flash主题动画演示: <a href="http://soft.yesky.com//imagesnew/software/0503/16/yl050316-f1-7650.swf" target="_blank">http://soft.yesky.com//imagesnew/software/0503/16/yl050316-f1-7650.swf</a></p>
<p align="left"><font size="2">　　本文只是简单的介绍了用Flash MX Pro 2004开发手机Flash动画的制作过程和设计原理，要开发一个完整的手机Flash主题需要掌握很多Flash设计与Flash Lite程序的应用技术，现在要获得手机版本的Flash Lite Player播放器需要每个用户发邮件到</font><a href="mailto:mobiledeveloper@macromedia.com"><font color="#000000" size="2">mobiledeveloper@macromedia.com</font></a><font size="2">申请，申请时需要输入自己的手机型号和手机代码才能获得可以播放动画的正式版本。小珍借花献佛给大家一个发烧友开发的全功能的手机Flash主题动画（</font><a href="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-desktop_d.fla"><font color="#ff0000" size="2"><u>下载</u></font></a><font size="2">），供有兴趣的闪客们研究新的Flash技术。<br /></font><span class="f14"><font size="2"><strong>　　三、在手机上应用制作好的Flash动画主题</strong> </font>
<p><font size="2"></font></p>
<p align="left"><font size="2">　　得到Flash Lite Player正式版可以畅通无阻的在手机上播放Flash动画，不过很遗憾现在Macromedia已经停止申请。但我们可以从网上的手机论坛上找到Flash Lite Player试用版，虽然功能并不完整，但也能体验手机播放Flash的效果。<br /><br />　　先在手机上安装Flash Lite 1.1 ，这样在手机的程序菜单界面就能看到熟悉的Flash图标（图10）。 </font></p>
<p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-10.jpg" width="176" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图10</font></p>
<p align="left"><font size="2">　　把自己制作好的Flash文件添加到手机的存储卡上，然后可以用手机的资源管理器软件找到Flash动画文件（图11）。</font></p>
<p align="center"><font size="2"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-11.jpg" width="176" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /><br />图11</font></p>
<p align="left"><font size="2">　　选择打开这个Flash文件，即可看到我们的动画在手机上演示了（图12).</font></p>
<p align="center"><img style="CURSOR: pointer" onclick="javascript:window.open(this.src);" src="http://soft.yesky.com/imagesnew/software/0503/16/yl050316-f1-12.jpg" width="176" onload="javascript:if(this.width&gt;screen.width-500)this.style.width=screen.width-500;" alt="" /></p>
</span></p>
</span></p><img src ="http://www.blogjava.net/sl2cj/aggbug/45679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-11 16:57 <a href="http://www.blogjava.net/sl2cj/articles/45679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MX 2004 数据绑定[高级] </title><link>http://www.blogjava.net/sl2cj/articles/45200.html</link><dc:creator>blog搬家了--[www.ialway.com/blog]</dc:creator><author>blog搬家了--[www.ialway.com/blog]</author><pubDate>Tue, 09 May 2006 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/sl2cj/articles/45200.html</guid><wfw:comment>http://www.blogjava.net/sl2cj/comments/45200.html</wfw:comment><comments>http://www.blogjava.net/sl2cj/articles/45200.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sl2cj/comments/commentRss/45200.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sl2cj/services/trackbacks/45200.html</trackback:ping><description><![CDATA[<table cellspacing="0" cellpadding="5" width="658" align="center" border="0">
    <tbody>
        <tr>
            <td align="center" width="100%"><strong>MX 2004 数据绑定[高级]</strong></td>
        </tr>
        <tr>
            <td>本文作者:<a href="mailto:kaiyangli@163.com"><font color="#636194">Mizarli</font></a><br />文章出处:ultrashock<br />文章性质:翻译<br />阅读次数:5854<br />发布时间:2005-01-18</td>
        </tr>
        <tr>
            <td><strong>声明：</strong>本译文只供个人学习参考之用；本文所有权属于ultrashock所有，英文原版链接为：<a href="http://www.ultrashock.com/tutorials/flashmx2004/databinding.php" target="_blank"><font color="#636194">http://www.ultrashock.com/tutorials/flashmx2004/databinding.php</font></a> <br />由于水平有限，其中难免有误，请多多包涵！如要转载请通知本站,谢谢合作! <br /><br /><strong>讨论及源文件这里</strong>:<a href="http://www.webstudio.com.cn/forum/showthread.php?p=86#post86" target="_blank"><font color="#636194">http://www.webstudio.com.cn/forum/showthread.php?p=86#post86</font></a> <br /><br /><strong>创世之初...</strong> <br />创世之初上帝创造了天空和大地。当时大地是无定形的、方块的，所以上帝创造了Flash并发现它用起来还不错。那是第一天的事了。到了第四天，上帝已经不满足于普通的动画了，所以他引入了ActionScript。到了第五天，上帝摒弃了旧式的ActionScript并重新开始构建，但仅仅是使AS更规范了些。到了第六天，AS得到了补充并且上帝创造了组件。后来，上帝发现组件很孤独就创造了数据流，通过它，组件可以被绑定在一起，分享数据综合的乐趣。第七天，上帝打算休息了，但在发明了Flash甚至更好的是在创作环境中整合了数据绑定功能和整齐的组件构架。 <br /><br /><strong>那么，什么是数据绑定呢？</strong> <br />也许你已经认识到：数据绑定对于Flash来说已经不是新特性了，但是自从加强了对FlashMX的改善后，已经有了极大的提高。简单地说，数据绑定是一种简单的方法&mdash;&mdash;不费太多功夫，就可以把你的数据捆绑在一起。你可以协调不同用UI（user interface）组件的属性，甚至可以通过数据组件把它们与服务器端的数据相连。数据绑定不需要懂得复杂的AS或者懂得操作XML，而是把这项操作减小到用简单的&ldquo;点击&rdquo;操作就能完成。数据绑定是快速应用程序开发（RAD）的一个关键的特性也是原型开发的利器。 <br /><br />点对点（point-and-click）数据绑定本质上是通过运行时数据绑定应用程序接口（API）实现的。假如在你的影片里包含了需要的资源，你也可以通过脚本来访问它。这仅仅需要复制公用库里的数据绑定类符号（Data Binding Classes），可以在Flash菜单中找到它： <br />窗口&mdash;&mdash;其他面板&mdash;&mdash;公用库&mdash;&mdash;类。这是最好的方法，如果你仅需要建立到动态内容的绑定或者仅仅喜欢在代码环境下工作。然而，我们现在关注的是可视化的界面。 <br /><br />在开始之前，在这里请先下载源文件并解压缩到一个新目录中。 <br /><br /><strong>寻找你的方向</strong> <br /><br />开始吧！让我们来看看用来实现数据绑定的新面板。开始时会有点心慌，但我们将很快适应它。我已经把它们布置好了，以组件面板开始，结束于组件检查器中的&ldquo;架构标签&rdquo;。别多想，继续学习！ <br /><br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/components_panel.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/components_panel.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/components_inspector.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/components_inspector.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组件面板&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组件检查器：参数标签 <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/components_bindings.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/components_bindings.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a>&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/components_schema.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/components_schema.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组件检视面板：绑定标签&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组件检视面板：架构标签 <br /><br /><strong>基本的组件</strong> <br /><br />既然组件面板让我们有点慌乱，那就从这开始学习吧。我们要建立一个非常简单的在两个单选按钮（CheckBox）之间的绑定，像这样：<strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/CheckBoxes.swf" target="_blank"><font color="#636194">演示</font></a></strong> <br />单点每个单选按钮时，你会发现另外一个也发生了同样的变化。这就是我们要达到的目的。 <br />1、&nbsp;&nbsp;&nbsp;&nbsp;从组件面板拖拽出两个单选按钮，分别给这两个实例命名为checkBox1和checkBox2 ； <br />2、&nbsp;&nbsp;&nbsp;&nbsp;打开组件面板的&ldquo;绑定&rdquo;标签，然后选择checkBox1，这时的面板应该是空的，因为还没有建立任何绑定； <br />3、&nbsp;&nbsp;&nbsp;&nbsp;点击<a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/plus_binding.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/plus_binding.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a>按钮，会弹出&ldquo;添加绑定&rdquo;面板； <br />4、&nbsp;&nbsp;&nbsp;&nbsp;我们要绑定的是已选的checkBox的selected属性，所以点击名为&ldquo;selected：Boolean&rdquo;即可，然后点击&ldquo;OK&rdquo;; <br /><br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/add_binding_window.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/add_binding_window.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />5、&nbsp;&nbsp;&nbsp;&nbsp;在绑定标签下显示了一个新建的绑定。现在我们把它和其他对象连接起来。双击参数列表中的&ldquo;bound to&rdquo;参数的空白区(会有&ldquo;绑定到&rdquo;窗口弹出)，通过选择&ldquo;组件路径&rdquo;checkBox2的&ldquo;架构位置&rdquo; selected属性，完成绑定，如下所示： <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/click_bound_to.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/click_bound_to.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/bound_to_window.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/bound_to_window.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />6、&nbsp;&nbsp;&nbsp;&nbsp;好了，测试你的影片吧！ <br /><br />尽管看起来不错，但是还不是很严密的。有一个面板我们还没看到。最使人烦乱的&ldquo;架构&rdquo;标签。组件的架构标签是对组件数据结构的一个概括。在一个单选按钮的情况下，是最简单的，默认为一个属性&mdash;&mdash;决定它是被选中还是未被选中。你可以看到&ldquo;selected&rdquo;字样显示在刚建立的单选按钮的列表里。源文件名为CheckBoxes.fla <br /><br /><strong>架构</strong> <br />使用架构面板，我们不会受限制于默认条件。我们可以在这加入新的属性，并且这些属性是可控的有用的。通常这不用做太多，因为属性并不意味任何东西，但事实上你可以建立更多的组件属性来提供数据绑定。 <br /><br />第二个例子，我们要绑定两个单选按钮，不过这次绑定一个组件的&ldquo;可用&rdquo;属性，用它来激活另一个组件。：<strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/CheckBoxes_enabled.swf" target="_blank"><font color="#636194">演示</font></a></strong> <br /><br />注意选择或者取消选择单选按钮1可以激活或不激活单选按钮2。这更有用处。你可以用这样的功能，在表单中根据用户的选择来激活或者不激活表单中的其他部分。让我们开始吧。 <br /><br />1、&nbsp;&nbsp;&nbsp;&nbsp;开始前去掉例1中已绑定的选项，选择任何一个单选按钮，然后选择绑定标签，单击<a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/minus_button.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/minus_button.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> 按钮； <br />2、&nbsp;&nbsp;&nbsp;&nbsp;选择组件实例&ldquo;checkBox2&rdquo;，点击架构标签，点击<a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/plus_binding.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/plus_binding.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> 增加一个新属性； <br />3、&nbsp;&nbsp;&nbsp;&nbsp;在架构面板下会有很多信息显示出来，但是别担心，本例中不需要太多的设置。仅仅设置&ldquo;field name&rdquo;参数为&ldquo;enabled&rdquo;，&ldquo;data type&rdquo;参数为&ldquo;Boolean&rdquo;。 <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/new_prop_enabled.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/new_prop_enabled.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />4、&nbsp;&nbsp;&nbsp;&nbsp;现在象前面所做的一样，建立帮定。不过这回是绑定单选按钮1的&ldquo;selected&rdquo;属性到单选按钮2的&ldquo;enabled&rdquo;属性上，测试一下！ <br /><br /><strong>是不是目前所有的数据都是基于XML呢？</strong> <br /><br />是的！所以要熟悉它，否则就有被淘汰的可能！除XML以外其他的方法都会在数据绑定上遇到困难！接下来，我们将引入XML架构，然后从外部的XML文件移植数据做菜单条，用XMLConnector组件。 <br /><br />首先你应该知道菜单条组件，实际上有许多XML驱动的组件（比如菜单、菜单条、目录树），只是XML节点的名字被忽略了，仅仅使用了XML的属性。下面就是一个XML文件例子： <br />
            <table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0">
                <tbody>
                    <tr>
                        <td><strong>代码:</strong></td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                    </tr>
                    <tr>
                        <td class="code">&lt;menu&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-title label=&quot;file&quot;&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-item label=&quot;load&quot; /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-item label=&quot;save&quot; /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-item label=&quot;print&quot; /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/menu-title&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-title label=&quot;edit&quot;&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-item label=&quot;cut&quot; /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-item label=&quot;copy&quot; /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-item label=&quot;paste&quot; /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-item label=&quot;sub-menu&quot;&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;menu-item label=&quot;nothing here&quot; /&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/menu-item&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/menu-title&gt; <br />&lt;/menu&gt; <br /></td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                    </tr>
                </tbody>
            </table>
            <br />xmlMenu.swf文件演示 <br /><strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/xmlMenu.swf" target="_blank"><font color="#636194">演示</font></a></strong> <br /><br />架构面板将给我们带来的更多的便利。我们将用XMLConnector组件载入数据，而用架构面板指引菜单引用相应部分的XML文件。 <br /><br />1、&nbsp;&nbsp;&nbsp;&nbsp;首先，我们需要在舞台上放置一个菜单条组件Menu和一个XMLConnector组件，分别为组件实例命名menuBar和xmlConnector。你可以把XMLConnector组件放在舞台的任意位置，因为发布时，它是不可见的； <br />2、&nbsp;&nbsp;&nbsp;&nbsp;接下来，需要设置XMLConnector组件来加载数据。要达到这个目的，请在组件参数面板中使用如下的设置： <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/setup_xmlConnector.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/setup_xmlConnector.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />menu.xml是XML文件名，请注意在direction参数设置为receive，因为这是一个静态的XML文档； <br />3、&nbsp;&nbsp;&nbsp;&nbsp;接下来增加些智能化设置。我们用架构面板来告诉XMLConnector，什么样的XML文件是可以接受的。确定XMLConnector组件处在被选择状态，打开组件属性检查器的架构标签； <br />4、&nbsp;&nbsp;&nbsp;&nbsp;选择架构标签下的&ldquo;results&rdquo;属性，因为数据将加载到这里。点击[IMAGES]http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/import_schema_button.gif[IMAGES] 按钮导入一个XML架构，导航栏中选择&ldquo;menu.xml&rdquo;文件，选择打开选项。你的架构面板看起来将会是如下的样子： <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/schema_imported.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/schema_imported.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />所有这些信息是为了说明你的XML文档的结构。Flash会发现重复的元素并将它们视为数组，Flash也侦查象这样的值&ldquo;true&rdquo;或者&ldquo;1&rdquo;并把它们做为Boolean或 Number类型的值。现在我们只对根节点和菜单感兴趣； <br />5、&nbsp;&nbsp;&nbsp;&nbsp;选择 menuBar组件并打开属性检查器的绑定标签。menuBar组件默认有一个可绑定属性、数据源属性； <br />6、&nbsp;&nbsp;&nbsp;&nbsp;增加一个到数据源的绑定，象我们在例2中做的那样： <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/bound_to_menuNode.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/bound_to_menuNode.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;选择菜单节点，数据绑定完成 <br /><br />7、&nbsp;&nbsp;&nbsp;&nbsp;还有件事我们还没有做：加载XML文档；只需要在主时间线放一小段代码： <br />xmlConnector.trigger(); <br />8、&nbsp;&nbsp;&nbsp;&nbsp;测试影片吧！ <br /><br /><strong>数组和索引</strong> <br />现在，大部分的数据绑定是使用数组完成的，这是通过基于列表的组件（比如List组件、DataGrid组件或ComboBox组件）完成的。Flash可以探测到XML架构中重复的节点，并且把它们作为一个数组来处理。作为示范，我们将建立一个小的简单的应用程序，它 <br />用来显示家务活的值班表。 <br />selectIndex.swf文件演示在这里 <br /><strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/selectIndex.swf" target="_blank"><font color="#636194">演示</font></a></strong> <br /><br />以下是驱动这一程序的XML 代码： <br />
            <table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0">
                <tbody>
                    <tr>
                        <td><strong>代码:</strong></td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                    </tr>
                    <tr>
                        <td class="code">&lt;chores title=&quot;House Work Rota&quot;&gt; <br />&lt;day label=&quot;monday&quot;&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;dishes&quot; person=&quot;john&quot; time=&quot;15 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;cooking&quot; person=&quot;sam&quot; time=&quot;1 hour&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;walking dog&quot; person=&quot;david&quot; time=&quot;30 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;laying the table&quot; person=&quot;peter&quot; time=&quot;5 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;slacking off&quot; person=&quot;elisabeth&quot; time=&quot;all day&quot; /&gt; <br />&nbsp;&nbsp;&lt;/day&gt; <br />&lt;day label=&quot;tuesday&quot;&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;dishes&quot; person=&quot;david&quot; time=&quot;25 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;cooking&quot; person=&quot;peter&quot; time=&quot;1 hour&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;walking dog&quot; person=&quot;sam&quot; time=&quot;20 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;laying the table&quot; person=&quot;john&quot; time=&quot;15 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;slacking off&quot; person=&quot;elisabeth&quot; time=&quot;all day&quot; /&gt; <br />&nbsp;&nbsp;&lt;/day&gt; <br />&lt;day label=&quot;wednesday&quot;&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;dishes&quot; person=&quot;sam&quot; time=&quot;20 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;cooking&quot; person=&quot;david&quot; time=&quot;1 hour&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;walking dog&quot; person=&quot;peter&quot; time=&quot;30 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;laying the table&quot; person=&quot;john&quot; time=&quot;15 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;slacking off&quot; person=&quot;elisabeth&quot; time=&quot;all day&quot; /&gt; <br />&nbsp;&nbsp;&lt;/day&gt; <br />&lt;day label=&quot;thursday&quot;&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;dishes&quot; person=&quot;peter&quot; time=&quot;3 hours&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;cooking&quot; person=&quot;john&quot; time=&quot;1 hour&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;walking dog&quot; person=&quot;david&quot; time=&quot;30 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;laying the table&quot; person=&quot;sam&quot; time=&quot;10 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;slacking off&quot; person=&quot;elisabeth&quot; time=&quot;all day&quot; /&gt; <br />&nbsp;&nbsp;&lt;/day&gt; <br />&lt;day label=&quot;friday&quot;&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;dishes&quot; person=&quot;sam&quot; time=&quot;20 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;cooking&quot; person=&quot;sam&quot; time=&quot;1 hour&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;walking dog&quot; person=&quot;peter&quot; time=&quot;20 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;laying the table&quot; person=&quot;sam&quot; time=&quot;5 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;slacking off&quot; person=&quot;elisabeth&quot; time=&quot;all day&quot; /&gt; <br />&nbsp;&nbsp;&lt;/day&gt; <br />&lt;day label=&quot;saturday&quot;&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;dishes&quot; person=&quot;john&quot; time=&quot;1 hour&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;cooking&quot; person=&quot;john&quot; time=&quot;1 hour&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;walking dog&quot; person=&quot;david&quot; time=&quot;30 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;clean car&quot; person=&quot;sam&quot; time=&quot;30 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;laying the table&quot; person=&quot;david&quot; time=&quot;10 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;slacking off&quot; person=&quot;elisabeth&quot; time=&quot;all day&quot; /&gt; <br />&nbsp;&nbsp;&lt;/day&gt; <br />&lt;day label=&quot;sunday&quot;&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;dishes&quot; person=&quot;peter&quot; time=&quot;20 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;cooking&quot; person=&quot;david&quot; time=&quot;1 hour&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;walking dog&quot; person=&quot;peter&quot; time=&quot;20 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;laying the table&quot; person=&quot;john&quot; time=&quot;5 mins&quot; /&gt; <br />&nbsp;&nbsp;&lt;job description=&quot;slacking off&quot; person=&quot;elisabeth&quot; time=&quot;all day&quot; /&gt; <br />&nbsp;&nbsp;&lt;/day&gt; <br />&nbsp;&nbsp;&lt;/chores&gt; <br /></td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                    </tr>
                </tbody>
            </table>
            <br />那么我们从哪里入手呢？ <br />首先导入我们的XML架构，在舞台上放置一个XMLConnector组件实例（并命名，因为没有命名的组件实例是不允许进行绑定的），导入文件&ldquo;chores2.xml&rdquo;&mdash;&mdash;确认把它导入到results参数里而不是其他参数；接下来我们要绑定驱动应用程序的数据到comboBox组件上。注意XML的属性&mdash;&mdash;存储一周中的每一天作为标签。这会是很便利的，因为这正是comboBox组件需要的，但通常这不是最好的习惯。我们将在名字为&ldquo;格式化&rdquo;的部分看到更适合的用法。 <br /><br />绑定comboBox的数据驱动程序到XML文档源： <br />1、新建comboBox组件实例，并命名； <br />2、选择列表框组件，打开组件检查器的绑定标签； <br />3、在数据驱动程序属性中新建一个绑定； <br />4、点击&ldquo;Bound To&rdquo;域，指向XMLConnector组件，从构架中选择天数的数组day:Array <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/bound_to_array.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/bound_to_array.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />接下来，我们需要配置数据栅格DataGrid组件和XML数据源。这有点复杂因为整个数据源需要改变&mdash;&mdash;无论列表框中日期选择了哪一天。如果比较XML文档和Flash解释的XML架构，你会发现它的结构象一个嵌套的数组。在&ldquo;天数数组&rdquo;day的每一天包括一个&ldquo;工作数组&rdquo;job。既然每个东西在架构中只提及一次，我们下一步就使用架构来绑定day数组中的N个索引的job数组。现在你独立可以完成这一步了；在XMLConnector架构中，用DataGrid组件实例的dataProvider属性绑定job数组节点。 <br />到目前为止，我们还不能说job数组已经绑定到实际的XML文档里，事实上，有7个选择&mdash;&mdash;而我们只绑定了第N天的数组；但是Flash在确定N的取值时，有个秘密。 <br />1、&nbsp;&nbsp;&nbsp;&nbsp;再次选择XMLConnector并打开绑定标签； <br />2、&nbsp;&nbsp;&nbsp;&nbsp;选择从job数组到dataGrid组件实例的绑定&mdash;&mdash;results.chores.day.[n].job。你也许注意到一个新的参数Index for &lsquo;day&rsquo;已经出现在底端。这个参数让我们指定day数组的索引值。在这里你可以输入一个值，但是我们想让它随comboBox组件实例的选项而变化。本质上，在其他的可绑定的属性上都可以这么用，所以我们仅仅把它和comboBox组件实例的selectedIndex属性绑定在一起，就象我们所做过的其他绑定一样&mdash;&mdash;双击Index for &lsquo;day&rsquo;参数的空白值区，弹出绑定索引窗口，取消使用常数值选项，选择&ldquo;组件路径&rdquo;ComboBox的&ldquo;架构位置&rdquo;selectedIndex:Number选项。 <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/binding_sub.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/binding_sub.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br />3、&nbsp;&nbsp;&nbsp;&nbsp;测试影片好了吧。 <br /><strong>格式化</strong> <br />好了！我们已经知道怎样从一个组件中得到一个值并且把这个值放在另外一个组件中。但是这通常是不够的。有时我们需要在组件中的数据以不同方式展现；有时需要两个组件展示不同的数据。 <br />我们用格式化来实现这个目标。有几个内建的格式化工具你可以选择，同时你也可以自定义的格式，用AS2类。你可以选择在选择绑定时选择格式化工具并且从列表中选择它们。选择自定义的格式需要用到你自己的类。 <br /><a href="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/choose_formatter.gif" target="_blank"><img title="点击这里用新窗口浏览图片" src="http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/choose_formatter.gif" onload="javascript:if(this.width&gt;screen.width-300)this.width=screen.width-300" border="0" alt="" /></a> <br /><br />我们以内建的格式开始，比如 <br /><br /><strong>Boolean（布尔值）</strong> <br /><br />也许是最简单的内建格式化方式。它仅仅是一个布尔值（或真或假）并且输出一个字符串。你可以通过真或假来选择要描述的值&mdash;&mdash;在格式化选项中。 <br /><strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/Bool_formatter.swf" target="_blank"><font color="#636194">Bool_formatter.swf演示</font></a></strong> <br /><br /><strong>Compose String（排列字符串）</strong> <br />转换一个对象的域，形成单个字符串。你可以结合任何数量的域，也可以插入其他的字符。建立一个字符串模板，选择格式化选项并键入字符串。你也可以放置任何文本在这里，但是任何在&rdquo;&lt;&gt;&rdquo;表示符中的内容将被做为一个域来处理。如果对象有子对象（比如XML）那么，你可以使用它们&mdash;&mdash;通过点语法来获得它们的路径。字符串模板的例子如下： <br /><strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/Compose_formatter.swf" target="_blank"><font color="#636194">Compose_formatter.swf演示</font></a></strong> <br /><br /><strong>Date（日期）</strong> <br />把日期转换成字符串，简单的模板如&ldquo;MM/DD/YYYY&rdquo;。允许的格式&ldquo;M&rdquo;(月份)，&ldquo;D&rdquo;（日期），&ldquo;Y&rdquo;（年份），&ldquo;H&rdquo;（小时），&ldquo;N&rdquo;（分钟）和&ldquo;S&rdquo;（秒）。你可以用格式化工具反向格式化字符串为日期，但是由于某种原因，这种做法仅仅用在双向绑定中。 <br /><strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/Date_formatter.swf" target="_blank"><font color="#636194">Date_formatter.swf演示</font></a></strong> <br /><br /><strong>Number (数字)</strong> <br />非常简单的格式化选项。可以显示十进制的数字。 <br /><strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/Number_formatter.swf" target="_blank"><font color="#636194">Number_formatter.swf演示</font></a></strong> <br /><br /><strong>Rearrange Fields (重新排列的域)</strong> <br />让你可以协调域，比如一个组件的数据源中的域名和另一个组件数据源的域名不同的情况下。域是以列表的形式成对出现在格式化选项中。比如一个简单的字符串：&rdquo;label=name;data=colour;otherField=yetAnotherField&rdquo;。这对于显示数据很有用，比如以下拉列表框和列表框显示数据；相应改变组件标签域属性，可以用重新排列的域格式化你想显示的作为标签的域。在这个例子中，一些XML文件已经加载了，用来移植到下拉列表框和它的域（重新排列的），所以名称属性被用作标签。 <br /><strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/Rearrange_formatter.swf" target="_blank"><font color="#636194">Rearrange_formatter.swf演示</font></a></strong> <br /><br /><strong>Custom Formatter（自定义格式化）</strong> <br />要自定义格式，需要定义一个很简单的类，它有两个方法：格式化和非格式化，为每种类型提供一个依据，并且可以返回任何东西。在这个例子中，类格式化数字为英镑符号： <br />
            <table style="WORD-BREAK: break-all" cellspacing="3" cellpadding="0" width="96%" align="center" border="0">
                <tbody>
                    <tr>
                        <td><strong>代码:</strong></td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                    </tr>
                    <tr>
                        <td class="code">// class used to convert numbers to sterling currency and back again <br />class SterlingFormatter { <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;// turns a number into a string <br />&nbsp;&nbsp;&nbsp;&nbsp;function format (data:Number) : String{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var currency:String; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var pounds:Number = Math.floor(data); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var pence:Number = Math.round((data - pounds)*100); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var poundsStr:String = String(pounds); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var penceStr:String; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pence&lt;10){ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;penceStr = &quot;0&quot; + String(pence); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;penceStr = String(pence); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currency = &quot;&amp;pound;&quot; + pounds + &quot;.&quot; + penceStr; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return currency; <br />&nbsp;&nbsp;&nbsp;&nbsp; } <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;// removes sterling format and returns a number <br />&nbsp;&nbsp;&nbsp;&nbsp;function unformat (data:String) : Number { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var str:String = data.substr(1); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var num:Number = parseFloat(str); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return num; <br />&nbsp;&nbsp;&nbsp;&nbsp; } <br />} <br /></td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                    </tr>
                </tbody>
            </table>
            <br />键入一个数值在左边，看看有边会有什么格式产生 <br /><strong><a href="http://www.webstudio.com.cn/wsswf/dataBinding/Custom_formatter.swf" target="_blank"><font color="#636194">Custom_formatter.swf演示</font></a></strong> <br /><br /><strong>局限、防范、实践</strong> <br />创作时的数据绑定是基于mc路径的，这将带来一些局限和危险。主要的问题是当你建立一个在两个组件之间的绑定时，这两个组件的实例必须被唯一的标识，而且这也依赖它们的路径。因此，如果你改变了一个组件的路径，之后再提供绑定，将会丢失这个绑定。尽管我已经注意到你可以安全的改变组件实例的名字不必改变它们的绑定。 <br />通常，在运行时，组件可以从绝对路径上解决绑定问题。但是如果你提供到一个舞台上不存在的mc的绑定，绑定将从可以被识别的mc中选择&ldquo;最远的&rdquo;。问题是同样的mc将被不同的解释，如果该mc是在舞台上编辑过的或者在库中编辑的。要避免混乱、冲突、遗失已完成的内容，你需要遵循如下的指导方针： <br />1、&nbsp;&nbsp;&nbsp;&nbsp;不要对这样的mc使用绑定：即在创作过程中加到舞台上，又使用了动态附加的； <br />2、&nbsp;&nbsp;&nbsp;&nbsp;不要对舞台上选择了&ldquo;编辑&rdquo;过的符号提供数据绑定。使用&ldquo;本地编辑&rdquo;保护mc的内部结构关系； <br />3、&nbsp;&nbsp;&nbsp;&nbsp;在加入绑定之前，谨慎的规划你的应用程序，如果程序很复杂的话。当你觉悟到因为所有的组件嵌套在一个mc里而使所有的绑定失去了作用，将是一件无法启齿的错误。 <br />4、&nbsp;&nbsp;&nbsp;&nbsp;如果要将应用程序动态的加载到其他的影片里，使用 _level替代影片的target。 <br /><br />总的说来，以上的讲解只是引导你用窗体建立最简单的应用程序的开始，你还要添加很多的场景和组件。使场景都这场运转起来后再加入数据绑定。最后一点要说明（有点讨厌但它也确实是个尖锐的问题，在很多情况都会发生）。 <br /><br />如果你已经看过源文件，你就会发现我在引导层加入了一些箭头符号。这对于简单的绑定来说无关紧要，但是一些复杂的系统绑定是很难跟踪的，所以我提倡这样做：用最原始的&ldquo;文档&rdquo;来说明你在做着什么。用语言来描述你所做的绑定是比较困难的，但是图示可以很只管的表达绑定的意思。如果一些东西需要比较详细的说明，那么在一个引导层用文本来注释是很有帮助的。这些箭头不是正是的符号，重要的是可以保留一些对将要发生的事情的暗示。 <br /><br />结束 <br />数据绑定在MX2004中是个重要的主题，并且有很多方面我还没有涵盖到，包括运行时的API和身份认证。这本身就是个主题，但是很值得掌握&mdash;&mdash;它涵盖了很多的功能，你可以节省很多的时间和精力，不用重新构建它。 <br /><br />然而你也许不会选择数据绑定面板来开发企业级应用程序，你也许直接会用运行时的API。但是数据绑定面板可以快速的提供一个原型或小型应用程序，因为它们提供了非常简单的方法来构建复杂的数据交互。身份认证和格式化都可以通过AS2实现可扩展功能，是没有限制的。 <br /><br /><strong>讨论及源文件这里</strong>:<a href="http://www.webstudio.com.cn/forum/showthread.php?p=86#post86" target="_blank"><font color="#636194">http://www.webstudio.com.cn/forum/showthread.php?p=86#post86</font></a></td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/sl2cj/aggbug/45200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sl2cj/" target="_blank">blog搬家了--[www.ialway.com/blog]</a> 2006-05-09 13:53 <a href="http://www.blogjava.net/sl2cj/articles/45200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>