??xml version="1.0" encoding="utf-8" standalone="yes"?>欧洲 亚洲 国产图片综合,亚洲理论片在线中文字幕,亚洲av永久无码精品漫画 http://m.tkk7.com/sl2cj/category/10605.html<br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp---->乞怪猪blog搬家?-[www.ialway.com/blog]--希望l箋x!谢谢!^0^zh-cnWed, 28 Feb 2007 03:39:41 GMTWed, 28 Feb 2007 03:39:41 GMT60 Flash弹出H口 http://m.tkk7.com/sl2cj/articles/74939.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Fri, 13 Oct 2006 03:10:00 GMThttp://m.tkk7.com/sl2cj/articles/74939.htmlhttp://m.tkk7.com/sl2cj/comments/74939.htmlhttp://m.tkk7.com/sl2cj/articles/74939.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/74939.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/74939.html在网中弹出H口可以通过JS或onclick或onload调用window.open()的方法来实现Q如
window.open ('xhlv.htm','', 'height=100, width=100, top=100, left=100, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=yes')

而flash中同样可以通过cM的方法来实现Q?br />虽然在flash中也可以直接使用window.open()来弹出窗口,
getURL("javascript:window.open('pic_big.php','','toolbar=no,scrollbars=yes,resizable=yes')");

但是ȝ口会有一个object错误?br />
最合适的Ҏ是flash与html代码相结合:
1.在网中加入JS
function openWindow(theURL,winName,features) { //v2.0
 window.open(theURL,winName,features);}

2.在flash中调用已定义的openWindow()Q注?span style="COLOR: #ff0000">不是window.open()
getURL("javascript:openWindow('pic_big.php','','toolbar=no,scrollbars=yes,resizable=yes')");


blog搬家?-[www.ialway.com/blog] 2006-10-13 11:10 发表评论
]]>
Flash Video播放器Skin无法正常昄的问题:http://m.tkk7.com/sl2cj/articles/73782.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sun, 08 Oct 2006 05:58:00 GMThttp://m.tkk7.com/sl2cj/articles/73782.htmlhttp://m.tkk7.com/sl2cj/comments/73782.htmlhttp://m.tkk7.com/sl2cj/articles/73782.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/73782.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/73782.htmlFlash Video播放器Skin无法正常昄的问题:

如果有h做Flash VideoQ用FLV文g的话Q而且在用的同Ӟq选用了FLASH 8 自带的一些player skin。那么在基本情况下,skin会生成一个swf与其它文件同U,此时必须保证L件SWFQFLVQ播攑֙skin的swf文gQ以及最l显C的 html在同一U下昄Q才能让所有东襉K昄出来。如果徏一个这L目录l构
show.html
swf/ClearOverAll.swf
swf ideo.swf
swf ideo.flv
去观看show.html的话Q视频虽然能正式播放Q但播放器skin没办法加蝲了,解决办法是在Flash 8 中,lFLVPlayback命一个名字,如my_FLVPlybkQ然后在W一帧写上:
my_FLVPlybk.skin = “swf/ClearOverAll.swf?
再重新生成文Ӟ好了。也是说在flash中要指明skin文g的\?/p>

blog搬家?-[www.ialway.com/blog] 2006-10-08 13:58 发表评论
]]>
从AsBroadcaster到EventDispatcherhttp://m.tkk7.com/sl2cj/articles/73734.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sun, 08 Oct 2006 03:21:00 GMThttp://m.tkk7.com/sl2cj/articles/73734.htmlhttp://m.tkk7.com/sl2cj/comments/73734.htmlhttp://m.tkk7.com/sl2cj/articles/73734.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/73734.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/73734.html

从AsBroadcaster到EventDispatcher(? [作者:wiyiflash]

[ 2005-07-29 01:16:12 | 发布: N?/font> ]
前言:论坛里关于AsBroadcaster(q播)cȝ讨论很多Q有很多_֦的讲qͼ但ؓ了和EventDispatcher(zN)cL个比较,不得不把q位"老兄"拉来客串一下。对它我不会讲的很详l,不解的地方可以去搜搜前辈的帖子哦?br />
AsBroadcaster(q播)cdMX(flash6)里写?ASBroadcaster",q是Z么有时会发生以前的程序在2004版里发生异常的原因之一。AsBroadcaster cd有四个静态的Ҏ:
------------------------------------------------------------------------------
static function initialize(o:Object);
//o:对象
//initialize:初始化方法,为对象o附加上作Z件源的各功能。那么事件源都有什么功能呢Q?br />static function broadcastMessage(msg:String);
//msg:消息
//broadcastMessage:q播ҎQ事件源的一个主要功能就是向外界q播一条消息,告知听广播的?某一事g发生?"
static function addListener(o:Object);
//o:对象
//addListener:注册监听者方法,也就是决定广播消息给谁听的意?br />static function removeListener(oQObject);
//o:对象
//removeListener:注销监听者方法,也就是消息不再广播给谁听
--------------------------------------------------------------------------------
如此看来AsBroadcastercM不怎么复杂嘛,下面看看它的具体使用?

-----AsBroadcaster试.fla 开?-----
import mx.events.AsBroadcaster;
//mx.events.AsBroadcaster:AsBroadcastercȝ完整路径,q里?import'关键字将它导入,以后可以直接用'AsBroadcaster'来引用它?br />var o?new Object();
//啊,o部是个发布指挥消息的地方Q用它做事g源是个不错的选择
AsBroadcaster.initialize(o?;
//q里直接用AsBroadcaster来引用mx.events.AsBroadcasterc?原因如上q?br />//调用AsBroadcastercȝ静态方法initialize,为司令部附加上作Z件源的各功?br />var 步兵=new Object();
//生成步兵对象
步兵.onq攻=function(){
//onq攻: q里之所以用'on'做前~Q是Z表明q个Ҏ是响应一定事件的Ҏ
trace("步兵接到o部来电,轻装上阵Q火速向敌方阵地前进!");
// 接到'onq攻'消息后采取的措施
}
步兵.ond=function(){
//同上
trace("步兵接到o部来电,地待命Q多讑ֲ?严防来犯之敌!");
}
o?addListener(步兵);
//步光|加ؓo部的监听者,从现在v他将听从o部的指o行事
//以下雷同的地方,恕不赘述
var 装甲?new Object();
装甲?onq攻=function(){
trace("装甲光|到司令部来电Q加马力,火速向敌方阵地开q?");
}
装甲?ond=function(){
trace("装甲光|到司令部来电Q就地待命,修装?作好随时q攻的准?");
}
o?addListener(装甲?;
var 炮兵=new Object();
炮兵.onq攻=function(){
trace("炮兵接到o部来电,向敌斚w地猛烈蘪?");
}
炮兵.ond=function(){
trace("炮兵接到o部来电,地待命Q保证弹药准备充?");
}
o?addListener(炮兵);
//-------------------下面开始演C?-----------------------------------
trace("o部一hC?);
o?broadcastMessage("onq攻");
//o部用'broadcastMessage' Ҏq播'onq攻'指o
trace("o部二hC?);
o?removeListener(步兵);
//"在外,君o有所不授"Q司令部?removeListener'Ҏ注销?步兵'听从指o的义?br />o?broadcastMessage("ond");
//o部用'broadcastMessage' Ҏq播'ond'指o。注?步兵现在不会d?br />-----AsBroadcaster试.fla l束-----

具体的测试结果,大家试试便知。现在我们看看AsBroadcastercȝ局限所?
1、如果司令部发出的指令是"向一号高地进?Q这个消息应该怎么q播?
我们当然可以为步兵定义一?on向一号高地进?的方?然后监听o部广播的'on向一号高地进?的消息。可是如果需要发出N?向某高地q攻'的指令,岂不是要定义N个类似的事gҎQ如果进ȝ目标是随即确定的Q那又该怎么d?如果步兵同时监听"战地指挥?的广播,他怎样Ҏ不同的指挥者采取不同的措施Q步兵ƈ不能定一?onq攻'消息是来自司令部q是'战地指挥?呀。所以说QAsBroadcastercȝW一个局限就是它虽然q播了一?消息'Q却不能l出消息的具体说明?br />2、我们知道战争时期ؓ了做到策略的"因时因地制宜"Q常怼设一?战地指挥?。假设我们希望把步兵的进ȝ指挥权交l?战地指挥?Q而把步兵的驻守权交给"o?。因为司令部同时拥有装甲兵和炮兵的进Md的指挥权Q所以它可以q播"onq攻"消息,但一件意想不C会发生:步兵也跟着q攻?
Z防止出现差错Q司令部׃得不在进d"removeListener(步兵)"。但Z防止q播 "ond"消息时步兵不再驻守,所以在q播?onq攻"消息后必d?addListener(步兵)"。司令部何其累哉!所以说QAsBroadcastercȝW二个局限就是它注册了一个监听者,却ƈ不关心监听者到底是监听它的什么事件?br />3、AsBroadcastercȝW三个局限其实是q二个局限来的,是它有些情况下会造成q行的低效。假设还有一支空? 它有"onI"事gҎ,q且归司令部指挥。当o部广?onI"消息Ӟ得,步兵、装甲兵和炮兵就会也试图执行"onI"事gҎQ当然是费旉?

说了AsBroadcasterc这么多局限的地方Qƈ不是说AsBroadcastercM好,而是说要Ҏ情况选择使用不同的事件机制。如果不涉及C面说的几U情况,用AsBroadcastercd实很方便?比EventDispatcherc要省事)。也正因为AsBroadcastercLq么多局限的地方Q才使我们的主角EventDispatchercȝ上了光辉的舞収ͼL我们下篇的讲q吧!
------------------------------------------------------------------------
补充1:
AsBroadcaster.initialize(o)Ҏ会ؓo创徏一?_listener"数组Q它用来存储所有的监听者对象?br />补充2:
FlashMX 2004里还有个mx.transitions.BroadcasterMXc,它比mx.events.AsBroadcaster的功能要强大Q支持广播消息时附带更多的参敎ͼ可以Ҏ息进行更多描q。感兴趣的朋友可以访问我的论?/font> http://www.wiyiflash.com/bbs 里的特别教程?br />
转脓h?[l艺--Flash]原创作品 ,谢谢!


从AsBroadcaster到EventDispatcher(? [作者:wiyiflash]

[ 2005-07-29 01:19:42 | 发布: N?/font> ]
字体大小: ?/font> | ?/font> | ?/font>
在上中我们提到了AsBroadcastercd装的q播器作Z件源的诸多限Ӟ现在q看EventDispatcher(zN)cL如何拓展事g源的功能吧?br />EventDispatchercL2个静态方?
----------------------------------------------
static function initialize(object:Object):Void
//object:对象
//initialize:初始化方法,为对象object附加上作Z件源(在这里可以理解ؓzN中心?的各功能?br />static function _removeEventListener(queue:Object, event:String, handler):Void
//一个内部方?注销监听事g源相关事件的监听?br />-------------------------------------------------
EventDispatchercL4个公共方?
function dispatchEvent(eventObj:Object):Void
/*事gzNҎQ向外界q播一个消息,q有关于消息的相关描述(请与broadcastMessage(msg:String)Ҏ比较)
eventObj:事g对象Q它臛_应含?个属?假设o部ؓ一个事件派遣中心,一般定义如?
var eventObj=new Object();
eventObj.target=o?//定义q播消息的对?br />eventObj.type="onq攻";//定义消息的具体类?br />
其中target属性也可以不定义,dispatchEventҎ会将它设为默认的q播消息的对象?br />*/
function dispatchQueue(queueObj:Object, eventObj:Object):Void
/*q个Ҏ的中文意思,我根据它的功能将它称?事g传达"?br />queueObj:一个事件派遣中心对?br />eventObj:事g对象,注意:?dispatchEvent不同Q它的targetq无默认|需要你手工讑֮.
Z么将q个ҎUCؓ事g传达?因ؓ它可以让当前的事件派遣中心指C另一个事件派遣中?Ҏ的第一个参?向外界广播消息。其实在dispatchEventҎ的内部就调用了dispatchQueueQ只是将参数queueObj设ؓ当前的事件派遣中心Ş了?br />*/
function addEventListener(event:String, handler):Void
/*注册某个事g的监听?br />event:监听的事件名U?br />handler:监听事g的对?br />q个Ҏ与AsBroadcastercȝaddListenerҎ相比Q多Z参数eventQ?br />明确了所监听的具体事件?br />*/
function removeEventListener(event:String, handler)
/*注销某个事g的监听?br />event:事g名称
handler:要注销的监听事件的对象
q个Ҏ与AsBroadcastercȝremoveListenerҎ相比Q多Z参数eventQ明了从哪个事件中注销监听对象?br />*/
----------------------------------------------------------
下面p我们在战Z实战一下EventDispatcher吧。假设有两个指挥中心Q一个是o部,一个是战地指挥部。有三个늧Q分别是炮兵、步兵和敢死队。司令部可以指挥炮兵的进攅R驻守和步兵的驻守,战地指挥部可以指挥步늚q攻、冲锋和敢死队的冲锋Qƈ且司令部可以向战地指挥部传达指示。下面是实现上述复杂关系的代?
-----EventDispatcher试.fla 开?----
import mx.events.EventDispatcher;
//导入 mx.events.EventDispatcherc?br />var o?= new Object();
o?名称 = "o?;
EventDispatcher.initialize(o?;
//为司令部对象附加上派遣中心的相关功能?br />var 战地指挥?= new Object();
战地指挥?名称="战地指挥?;
EventDispatcher.initialize(战地指挥?;
//为战地指挥部对象附加上派遣中心的相关功能?br />
var 步兵 = new Object();
步兵.onq攻 = function(eventObj) {
     //步兵?onq攻'事g处理ҎQ记住需要有参数
var 来自=eventObj.target.名称;
     //eventObj.target引用q播'onq攻'事g的对象,用它可以讉K事g源ƈ反馈消息?br />var 阵地=eventObj.阵地;
      //获取事g的关? 阵地'属性?br />trace("步兵接到"+来自+"来电Q轻装上阵,火速向敌方"+阵地+"前进!");
};
步兵.ond = function(eventObj) {
var 来自=eventObj.target.名称;
trace("步兵接到"+来自+"来电Q就地待命,多设岗哨,严防来犯之敌!");
};
步兵.on冲锋=function(eventObj){
var 来自=eventObj.target.名称;
var 阵地=eventObj.阵地;
trace("步兵接到"+来自+"来电Q向敌方"+阵地+"发v冲锋!");

}
o?addEventListener("ond", 步兵);
//向司令部?ond'事g注册监听对象'步兵'
战地指挥?addEventListener("onq攻", 步兵);
//向司令部?onq攻'事g注册监听对象'步兵'
战地指挥?addEventListener("on冲锋",步兵);
//向战地指挥部?on冲锋'事g注册监听对象'步兵'
var 炮兵 = new Object();
炮兵.onq攻 = function(eventObj) {
var 来自=eventObj.target.名称;
var 阵地=eventObj.阵地;
trace("炮兵接到"+来自+"来电Q向敌方"+阵地+"阵地猛烈轰击!");
};
炮兵.ond = function(eventObj) {
var 来自=eventObj.target.名称;
trace("炮兵接到"+来自+"来电Q就地待命,保证弹药准备充!");
};
o?addEventListener("ond", 炮兵);
o?addEventListener("onq攻", 炮兵);
var 敢死?new Object();
敢死?on冲锋=function(eventObj){
var 来自=eventObj.target.名称;
var 阵地=eventObj.阵地;
trace("敢死队接?+来自+"来电Q向敌方"+阵地+"发v冲锋!拼死也要拿下Q?);
}
战地指挥?addEventListener("on冲锋",敢死?;

//---------------------------------------------------------------------
trace("o部指C?");
var eventObj1 = new Object();
//定义事g对象eventObj1
eventObj1.target = o?
//定义事g对象eventObj1的target属性gؓo?br />eventObj1.type = "onq攻";
//定义事g对象的事件类型ؓ'onq攻'
eventObj1.阵地="505阵地"
//一个自定义的属?阵地',你可以附加更多其他的属?br />o?dispatchEvent(eventObj1);
//o部将定义好的事g对象q播出去Q只有向它注册了'onq攻'属性的监听对象才能收到。步兵ƈ不会发动q攻?br />trace("战地指挥部指C?");
var eventObj2=new Object();
//eventObj2.target=战地指挥?
//因ؓdispatchEventҎ会自动将事g对象的target属性设为默认的q播消息的对象,所以这句也可以注释掉?br />eventObj2.type = "onq攻";
eventObj2.阵地="105阵地"
战地指挥?dispatchEvent(eventObj2);
trace("传达o部指C?");
var eventObj3=new Object();
eventObj3.target=战地指挥?
//q里必须讑֮事g对象的target属性。因为dispatchQueue不会为target属性设定默认?br />eventObj3.type="on冲锋";
eventObj3.阵地="123阵地";
o?dispatchQueue(战地指挥?eventObj3);
//战争时期也许o部ƈ不知道前UK队的布置情况Q所以它可以指令传辄战地指挥部,由战地指挥部事件对象广播给向自q相关事g注册的监听对?br />-----EventDispatcher试.fla l束-----
具体的测试结果我׃贴出来了。最后说说EventDispatchercȝ几个有趣的地?
1、监听事件的对象可以是Object、MovieClipQ还可以是Function.例如Q?br />假设在战Z每当发v冲锋Ӟ都要呐喊助威Q可以这样写Q?br />function 鼓励士气(){
trace("冲啊!杀?");
}
战地指挥?addEventListener("on冲锋",鼓励士气);
2、当监听事g的对象是自n?一般的写法是这L:
战地指挥?on冲锋=function(){
trace("同志们,我们一定会取得最后的胜利Q?);
}
战地指挥?addEventListener("on冲锋",战地指挥?;
但是q有一U更z的写法:
战地指挥?on冲锋Handler=function(){
trace("同志们,我们一定会取得最后的胜利Q?);
}
q种写法不再需要用"addEventListener"来注册了。它有两炚w要注?一是它d其他监听对象的事件处理之前执行,再就是它无法?removeEventListener'Ҏ注销监听?br />3、监听对象的事g处理E序也可以这样写:
步兵.handlerEvent=function(eventObj){
var 来自=eventObj.target.名称;
var 阵地=eventObj.阵地;
var e=eventObj.type;
switch(e){
case "onq攻":
trace("步兵接到"+来自+"来电Q轻装上阵,火速向敌方"+阵地+"前进!");
break;
case "ond":
trace("步兵接到"+来自+"来电Q就地待命,多设岗哨,严防来犯之敌!");
break;
case "on冲锋":
trace("步兵接到"+来自+"来电Q向敌方"+阵地+"发v冲锋!");
break;
default:
break;
}
o?addEventListener("ond", 步兵);
战地指挥?addEventListener("onq攻", 步兵);
战地指挥?addEventListener("on冲锋",步兵);

好了Q关于EventDispatchercd此就介绍完了Q希望大家能够掌握Flash的事件机制ƈ灉|地运用它们?
如果文章对你有帮助,h持Google+Firefox





怹地址怹地址: http://www.nshen.net/blog/feed.asp?q=comment&id=329

览模式: 阅读全文 | 评论: 3 | 引用: 27 | Toggle Order | 阅读: 2039
1 | 2 | >
引用2ss*
[ 2005-10-07 09:19:05 ]
你好Q?br />我看了你的教E,写得很不错啊Q可是我在用下面的代码测试时Q对象方法中的代码没有执行,不知道是Z么?下面是我用的代码Q?br />/*-----EventDispatcher试.fla 开?----*/
//导入 mx.events.EventDispatcherc?br />import mx.events.EventDispatcher;
var command:Object = new Object();
EventDispatcher.initialize(command);
command.addEventListener("onAssault", soldiers;
var soldiers:Object = new Object();
soldiers.onAssault = function(eventObj:Object) {
  trace("冲啊Q?);
};
command.dispatchEvent({type:"onAssault"});
引用N?/font>
[ 2005-10-07 11:07:47 ]
soldiers.onAssault = function q种方式赋值函数的话要在后边再addListenerQ正代码在下边

import mx.events.EventDispatcher;
var command:Object = new Object();
EventDispatcher.initialize(command);
var soldiers:Object = new Object();
soldiers.onAssault = function(eventObj:Object) {
trace("冲啊Q?);
};
command.addEventListener("onAssault", soldiers)
command.dispatchEvent({type:"onAssault"});

[redface] ps。这教E是转蝲的,是wiyi写的


]]>
attachMovie外部swf中的元素http://m.tkk7.com/sl2cj/articles/60702.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sat, 29 Jul 2006 03:46:00 GMThttp://m.tkk7.com/sl2cj/articles/60702.htmlhttp://m.tkk7.com/sl2cj/comments/60702.htmlhttp://m.tkk7.com/sl2cj/articles/60702.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/60702.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/60702.html attachMovie外部swf中的元素

作者: jimbob  旉Q?2006-04-19 文档cdQ原创 来自Q?/font> 蓝色理想
览l计 total:3014 | year:3014 | Quarter:364 | Month:364 | Week:87 | today:10

作者的个h站点: http://jim.blueidea.com/

怿大家都用qattachMovieq个语句Q可以方便的l定库中带Linkage输出的元素, 在一些游戏以及交互程度比较高的网站中l常会用到?那么q里遇C个问题,假如我在sub.fla库里面用linkage讑֮了几个元素, 然后惛_main.fla里面attachMovieq几个元素,该如何处理尼Q?/font>

W一U方?/strong>Qmain.fla使用 loadMovie(); ?loadMovieNum();先导?sub.swfQ?然后导入完成后,再用attachMovie来绑定元素?但是q种ҎQ用受C个很大的限制Q就是只能在 loadMovieNum()语句导入所在的层,或者loadMovie()语句导入所在的mc上面使用attachMovie, 比如Q?/font>

loadMovieNum("sub.swf",1);
_level1.attachMovie("cc","cc1",5);

是有效的

 loadMovieNum("sub.swf",1);
_level0.attachMovie("cc","cc1",5);

是无效的

同样Q?/font>

loadMovie("sub.swf", "abc");
_root.abc.attachMovie("cc", "cc2", 50);

是有效的

loadMovie("sub.swf", "abc");
_root.attachMovie("cc", "cc2", 50);

是无效的

W二U方?/strong>Q用Export for runtime sharing的方?Ҏ如下Q?/font>

在sub.fla中,讄好需要attach元素?Linkage|q定 Export for ActionScript  以及 Export in first frameq两?br />然后Q在sub.fla中新Z个空的mc, 在库中设|这个空mc的linkagegؓ ext  ,选定 Export in first frame 以及 export for runtime sharingQ?URLq一则填写?sub.swf 如图Q?/font>

在main.fla中,新徏一个空的mcQ在库中讄q个Imc的linkagegؓ ext ,然后选定 Import for runtime sharing , URL一填?sub.swf 如图Q?/font>

然后在main.fla中,再新Z个mcQ从库中把刚才的extq个Imc拖放到新建的q个mc中,然后把这个新mcL讄一个linkage|然后选定Export for ActionScript  以及 Export in first frameq两V?br />做好以上的两步,可以在main.fla里面Lattach sub.fla里面的可用元素了Q比如:

attachMovie("cc","cc", 1);
attachMovie("bar","bar", 2);

W三U方?/strong>Q?采用上面的第二种Ҏ虽然已经很理想了Q不q还是有一个限Ӟ那就是必ȝ?sub.flaQ加?extq个ImcQ?那么有没有方法绕q去Q可以不需要改动sub.flaQ直接在main.fla里面做文章尼Q?下面׃l第三种实用ҎQ?/font>

假定我们现有一个tt.swfq个文gQ里面库中设|了 linkage ?a,b,c 的三个可用元素, 那么用下面的ҎQ可以不修改tt.flaQ直接attach tt.swf里的q三个元?/font>

我们打开L文gmm.flaQ?新徏一个空mcQ然后在库中讄linkagegؓ a (或者b或者cQ只要保持和tt.swf里面的某个linage值同名即? ,然后选定 Import for runtime sharing , URL一填?tt.swf,如图Q?/font>

然后在mm.fla中,再新Z个mcQ从库中把刚才的aq个Imc拖放到新建的q个mc中,然后把这个新mcL讄一个linkage|然后选定Export for ActionScript  以及 Export in first frameq两V?br />然后可以在mm.fla里面Lattach tt.fla里面的可用元素了Q比如:

_root.attachMovie("c", "c", 1);
_root.attachMovie("a", "a", 11);
_root.attachMovie("b", "b", 111);

本教E第二以及第三种ҎQ提供源文g下蝲Q有兴趣可以? 下蝲 Q注源文件ؓflash8格式Q?/font>



]]>
【黑】AS 3.0教程(2)QAS3.0的类及绑?/title><link>http://m.tkk7.com/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://m.tkk7.com/sl2cj/articles/56123.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/56123.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/56123.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/56123.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/56123.html</trackback:ping><description><![CDATA[ <h3 class="entry-header">【黑】AS 3.0教程(2)QAS3.0的类及绑?/h3> <div id="hjzfbhn" class="entry-content"> <div id="dtx7zvz" class="entry-body"> <p>hiQ鸟W山的朋友们Q这ơ我们开始介lAS3.0中的cd何和库中元gl定Q和Ҏ的Document Class设计?br />d4步:<br />1.Z个标准的AS3.0c?(暂命名ؓKingdaMCQ多么伟大的名字啊,U“有名?<br />2.新徏一个元Ӟq设|它的Linkage和上面的cȝ定?br />3.在时间u上写代码Q用AS3.0代码创徏n份“有名”?br />4.删掉旉轴上代码Q用Flash 9新特色Document Class在舞C创造n份“有名”。just 体验一把?/p> <p>Q写h才知道要讲的内容多啊Q晕Q打了两个小Ӟ累了Q本节专门只讲讲AS3.0的类吧,其余的慢慢再Ԍ<br />在创建AS3.0之前Q请允许我先对AS3.0cȝ语法和承设计表C敬意。与标准的完全兼容,更好更严格的装Ҏ,特别是命名空?name space)的引入。从今天起从AS3.0P 在OOP层面上,AS3.0已经和JavaQC#qvq_了,甚至在某些方?比如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标准语言Q内在还是ؕp糟的AS1.0脚本语言Q那么AS3.0不论是从OOP设计U别Q还是从~译器别(如,对弱引用—?week reference—?的支持)来评估的都是标准、正宗、强大的语言?/p> <p>从AS3.0P我们ActionScript 开发者可以挺赯口,Z是真正的行业标准U程序员?/p> <p>在我l箋教程之前Q我要唱首歌l大家听Q?br />AS3的英明,l对不是一句两句能说清Q~~~~~~<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 id="lzfj7t9" class="entry-more" id="more"> <p>打完Q收工?/p> <p>1.建立AS3.0cLӞ<br />cL件是q嘛用的Q比如说Q我们想让一个对?Object)有很多功能,比如说这个对象是MovieClip型的Q支持拖拽,支持双击{等。那么先在一个类文g里写清楚q些要求和实现方法,然后可以用q个cd多实例,q些实例全h了这些功能。写一ơ,p用很多次Q多好。最重要的是它还可以通过l承来重用很多代码,为将来节省更多的旉?/p> <p>废话说QCtrl+N打开“新建”窗口,选择建立“ActionScript file”,Ctrl+SQ暂存ؓ"KingdaMC.as"文g。(即“有名”的cLӞ?/p> <p>输入如下代码Q?br /></p> <pre> <br /> //【黑】ActionScript 3.0pd教程(2)<br /> // http://www.kingda.org<br /> //代码如下<p></p><p>//package 见讲?<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>讲解1Q?AS2.0中我们用的是全饰名U来声明c,通俗_包括了类的\径在cd前。AS3.0则把路径提取出放在packageq个关键字后面。本文例子中的类文g和Fla文g在同一个目录下Q因?package后面没有什么东ѝ如果类文g?org目录下的kingda目录里,那么p写成 <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中可以定义好几个c,不用再写全饰名称了。但我不推荐q样做。一个文件一个类比较好管理? <p></p><p>讲解2Q?br />MovieClipcd也不像AS2.0那样是默认的全局cM。你要用MovieClipcM定要写这一句导入?/p><p>讲解3Q?br />cdAS3.0中也有public ?internal的区分了?br />public 表示q个cd以在M地方导入使用?br />internal表示q个cd能在同一个package里面使用?br />不写Q就默认为internalq个新的关键字?br />q有一个属性是finalQ表C个类不能被承了Q承树到此为止?br />说白了,q三个属性都是用来让我们更加规范的管理类之间的关p,以便来修改时心里有谱,大大的方便了修改?/p><p>同时Q对架构的设计能力要求更高,新手们和项目还是多使用public吧。越到后来你会越喜欢internal的。我只要看到internal和privateq两个关键字Q心中就无比的稳定和舒服。想来不programmer和我都会有同感吧?/p><p><br />2.新徏一个元Ӟq设|它的Linkage和上面的cȝ定?br />和教E第一章一PM个方块,按F8转成MovieClipQ再在库中右键点dQ选择"linkage"</p><p><a ><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输入框已l被废止了。因为在AS3.0中,再也没有MovieClip.attachMovie(), MovieClip.createEmptyMovieClip(), 以及 MovieClip.createTextField()的存在了?br />所有舞台的可见对象都由new来创建?br />比如说本例中Qsymbol1l定了KingdaMCQ那么如果我要在舞台上创Z个KingdaMCQ只要写<br /></p><pre><br /> var b1:Kingda = new KingdaMC();<br /> addChild(b1);<br /></pre><br />卛_? <p></p><p>q记得以前那些ؕ七八p的创徏q和组件的语法吗?什么createClassObject(),DepthManager的createChildAtDepth(),createClassChildAtDepth(),{等{等。我的一个java同事刚刚学习ASӞ被上面哪些ؕq创徏函数弄得一头雾水。统l没有了。只有一l天下的new ClassName()Q多标准哪,多舒服啊Q多好学啊?br /><strong>所以说Q没学AS2.0直接学AS3.0l对是新手的气?/strong></p><p>W二?addChildq个很重要?br />光有W一句new可不行。那只是告诉Flash我徏了一个名字叫b1的KingdaMC要显C,但还没告诉Flash什么时候显C呢?br />你什么时候打addChild(b1)Q那Flash才会把它昄在舞C。怎么P多简单?br />其实q里省略了一个this。如果你有一个MovieClip名叫BigKingdaQ希望在q个BigKingda里面加上一个KingdaMC实例Q那么就要写<br /></p><pre><br /> BigKingda.addChild(b1);<br /></pre><br />非常单? <p></p><p>Ctrl+Enter试Q发现创建的KingdaMCQ支持拖拽?br />大家试着用代码多创徏几个KingdaMCQ比如用for循环来徏?0?个的来玩玩?</p><p>好了Q篏了,要歇歇了Q下ơ讲Document Class?/p></div> </div> <img src ="http://m.tkk7.com/sl2cj/aggbug/56123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-07-02 00:21 <a href="http://m.tkk7.com/sl2cj/articles/56123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>探烦F9 As3.0 Preview http://m.tkk7.com/sl2cj/articles/56122.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sat, 01 Jul 2006 16:19:00 GMThttp://m.tkk7.com/sl2cj/articles/56122.htmlhttp://m.tkk7.com/sl2cj/comments/56122.htmlhttp://m.tkk7.com/sl2cj/articles/56122.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/56122.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/56122.html 探烦F9 As3.0 Preview 本文作?egoldy
文章出处:http://www.adobe.com
文章性质:译
阅读ơ数:482
发布旉:2006-06-30
探烦Flash Professional Actionscript 3.0 Preview


      声明Q本教程英文版源自Adobe的:http://www.adobe.com/devnet/flash/articles/flash9_as3_preview.html原作者:Jen deHaan和Peter deHaan,本站对其q行了翻译整理,此教E{载请注明出处Qƈ标有zd链接Q谢谢合作.
      Adobe Flash Professional 9 ActionScript 3.0 Preview(以下UAS3.0预览?是下一个将要发布的flash 创作工具的预览。众所周知它的名字是”Blaze?它扩展了Flash Professional 8 q包括了一pdҎ将与Flash9 一同发布,计划在2007q发布?
    q个预览版本包括支持Actionscript 3.0,它的优势在于包含在flash player 9 中的一个新的虚拟机(AVM)Q这个增强的虚拟比传l的Actionscript 代码的执行速度快上10倍,如果你想获得更多的关于flash player 9的信息,h?a target="_blank">Flash Player Product page
       Flash9预览版允怽~译包含或导入到Fla中的Actionscript3.0 脚本Q脓加在帧上或是与库元g兌的脚本在~译q程加入与场景内容的交互?
    q篇文章是通过使用Flash的绘制工具创Z个新的Ş体来展开的,当你学完了如果让形体与按钮和鼠标交互UdQ你会明白如果将actionscript从主旉轴上Ud外部文gQ怎样与库中的元g或是Flash文档自n链接?
    要完成此文章你需?a target="_blank">Flash Professional 9 Actionscript 3.0 ?a target="_blank">范例文g

在FLASH中编写Actionscript 3.0

      Flash9 预览版只是一个开发环境,它允怽创徏Flash文档(FLA)q用Actionscript 3.0,当然你也可以使用Flex Builder 2来编译As3.0.
Flash9预览版能让你创徏Z旉U的Actionscript3.0文档Qƈ可以使用其它的一些特性,如Ş变和q动~动Qflash.display.MorphShapec,abobe.utils package,static text fields,scenes,和库?
Flash9 预览版包括下面几个新Ҏ?
1.Document class:
Flash9引入了document class的概念,定义Z你的swf文g的主旉U关联的cR当你初始化L间线Ӟdocument class已l被构造了。你可以文g的属性面板或Actionscript 3.0发布讄面板上设|document class,如:File>Publish Settings > Flash tab > Settings button
如下图:


2.Symbol-class linkage: (元g-c链?
在ActionScript 3.0中你不再需要链接id了,取而代之的是,你可以ؓ你能直接实例化或动态创建实例的元g指定一个特定的cdU。如下图所C:


3.如果cM能在你指定的c\径当中找刎ͼ那么Flash会在场景之后创徏一个以使它仍可以被实例化。如下图所C:


4.Errors and warnings: Q错误和警告Q?/b>
针对ActionScript 3.0 errors和warnings增加了两个操?你可以在Actionscript 3.0的特性面板上选择。如Q选择Edit>Preferences > ActionScript > Actionscript 3.0讄按钮。如下图?
—个是Strict Mode,使编译器在编译过E中遇到问题旉常的严格Q都会当做错误来处理而不是警告。另一个是Warnings Mode,会出现额外的警告Q大多数情况下当你从Actionscript 2.0q移到As3.0Ӟ会v到很大的帮助Q当你选择了WarningӞ你可以通过~辑EnabledWarnings.xml文g中的Enabled属性来定义你想要的警告。EnabledWarnings.xml文g的位|:
o Windows: C:\Program Files\Adobe\Flash 9 Public Alpha\en\Configuration\ActionScript 3.0\EnabledWarnings.xml
o Mac OS: HD|Applications|Adobe Flash 9 Public Alpha|Configuration|ActionScript 3.0|EnabledWarnings.xml


      
Creating clickable and draggable shapesQ创建可点击和可拖动的Ş体)

      在这个例子中Q你探索flash9 预览版了一些新Ҏ,你将创徏一个简单的形体q用改良的事类模型来它可以点?在后面的例子中,你将使这个Ş体可以拖动,你的代码{换ؓcd动态创cȝ实例?

Clickable shapes(可点ȝ形体)

下面我们先开始创Z个可以点ȝ形体?
1. 选择文g>新徏一个文档,q将它保存ؓsimpleBall.fla.
2. 选择l制圆工P在场景中l制一个正圆。当然在l制的时候按住shift可以了?
注意Q?/b>在绘制时候确何你的Object Drawing modeQ对象绘模式Q是关闭的?
3Q选中选择工具q双击这个Ş体它高亮显C?
4.  当这个Ş体选中后,选择~辑modify>Convert to Symbol转换为元?按F8)来打开元g转换H口Q?
5Q将名称改ؓcircle然后点击ok,它转换为媄片剪辑?
6Q?元g要仍处于选中的状态,在属性面板上为它起一个实例名为:ball_mc
7Q?取消对元件的选择打开action面板(F9).
8Q在Action面板上输入如下代码:
代码:
ball_mc.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
   trace("You clicked the ball");
}

在这D代码中Qball_mc实例变成了可以点ȝ了,因ؓ你加入了事g侦听用来用h否有点击动作Q无Z时只要用LMball_mcq剪辑QclickHandler()函数׃执行。这非常cM于之前版本在lg中加入侦听事Ӟ如As2.0使用onPress()事g来检用h否点M剪辑或按钮?
9Q选择Control>Test Movie 试qQ当你点dӞ׃在面板上输出”you clicked the ball.
10Q关闭Swf文gq回Flash操作环境Q编辑你的Actionscript 代码Q在原有代码的上面加入如下一行代码:
ball_mc.buttonMode = true;
11Q重新测试你的媄?当你的光标位于圆之上Ӟ光标׃变成一只小手的形状。用于给用户一个提C,q是可以点击的?

Draggable shapes(可拖动的形体)

      如果你想让用户可以在场媄中拖动这个Ş体,你需要加入两个事性侦听器QmouseDown(MouseEvent.MOUSE_DOWN)和mouseUp(MouseEvent.MOUSE_UP),如下面的例子?
下面的例子示范如何ؓmouseDown和mouseUp事g加入事g侦听?
1.~辑我们之前的例子中代码如下Q?
代码:

ball_mc.buttonMode = true;
ball_mc.addEventListener(MouseEvent.CLICK, clickHandler);
ball_mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
ball_mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
function clickHandler(event:MouseEvent):void {
  trace("You clicked the ball");
}
function mouseDownListener(event:MouseEvent):void {
   ball_mc.startDrag();
}
function mouseUpListener(event:MouseEvent):void {
   ball_mc.stopDrag();
}

2.试你的q。你可拖动q个圆了?
虽然我们~写q个例子没有p我们多少旉Q但如果再让你写一个可拖动的Ş体,你可能不会情愿去写,假想你能你的代码{换ؓ与元件连接的外部cL?它可以自动的创徏可拖动的形体Q会在将来结省你的大量时间。下面我们就看如何实现?

Converting code into a class(你的代码{换成c?

下面的例子创Z个Actionscriptcd装整个q剪辑的拖动的实现逻辑。现在不什么时候,只要创徏一个类的新的实例被创徏Q它是可拖动的。无Mؓ场景中的每个实例d代码?
1.创徏一个新的Fla文档q将它保存ؓfancyBall.fla.
2.选择File>New选择Actionscript File创徏一个新的Actionscript文g?
3.保存q个Actionscript文g为Ball.as与Fla文g为同一路径下。也是刚才创徏的fancyBall.fla.
4. 在里面输入如下代码:
代码:
package {
  import flash.display.MovieClip;
   import flash.events.MouseEvent;
   public class Ball extends MovieClip {
      public function Ball() {
         trace("ball created: " + this.name);
         this.buttonMode = true;
         this.addEventListener(MouseEvent.CLICK, clickHandler);
         this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
         this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
      }
      private function clickHandler(event:MouseEvent):void {
         trace("You clicked the ball");
      }
      function mouseDownListener(event:MouseEvent):void {
        this.startDrag();
      }
      function mouseUpListener(event:MouseEvent):void {
         this.stopDrag();
      }
   }
}

       上面的代码定义了一个新cd为Ball,它承了MovieClipc?内置在flash.display package?.注意在用As3.0书写外部cLQ你必须明确的导入所需要类。不同于在Fla内部书写代码?
5Q保存ƈ关闭Ball.as文档Q然后打开fancyBall.fla文档?
6. 使用l制圆工P在场景中l制一个圆q将转换为movieClip.
7Q右d刚徏立的圆,选择链接?
8Q选择Export for ActionScript(为action导出)Q在Class(c?的输入框中输入类名Ball
9Q点击ok.关闭此面ѝ?
10Q确何这个圆的实例在场景中,试q。观看是否与之前的效果是一L?
它看h很不错,下面的例子我们来看如何动态的创徏cd例?

Dynamically creating instances of a classQ动态创建类实例Q?/b>

      你不需要在创作时L元件拖动到场景中,你也可以通过使用Actionscirpt新操作方法在库中创徏新的cd例?

Using the new operatorQ用新的操作)

     之前的Actionscript在创建新的MovieClip或是TextField实例时是通过使用如MovieClip.attachMovie(),MovieClip.createEmptyMovieClip(),或MovieClip.createTextField().来创建的。在ActionScript 3.0中,你可以通过cM如new Ball()的方法创建新的MovieClip,TextField,Sprite,和Video 实例—或是你自定义的c,如下ҎQ?
1.打开fancyBall.fla.场景中的所有实例元件删去,在主旉U上加入如下代码Q?
代码:
var b1:Ball = new Ball();

2.按下ctrl +回R试Q注意,我们会发现没有Q何东西出现在场景中,但是在输出面板上会显C:“ball created: instance1?管Flash创徏了ball的一个新的实例,但它是不可视的,因ؓ你没有用addChild()它加入到显C列表中?
3.~辑代码Q将b1实例加入到显C列表中。测试?
代码:
addChild(b1);


     下一部你需要用document class,它将允许你将代码从主旉轴的W一帧上Ud一个外部文档中Q它cM与之前例子中的通过元g与类q接.

Using the Document Class text box(使用Document class输入?

下面C如何你的代码从L间uUd一个外部的As文g中?
1.删去fancyBall.flaW一帧上的代码?
2.创徏一个新的Actionscript文档保存为BallDocumentClass.asQ与fancyBall.fla处于同一目录下?
3.加入如下代码在BallDocumentClass.as中:
代码:
package {
   import flash.display.MovieClip;
   public class BallDocumentClass extends MovieClip {
      private var tempBall:Ball;
      private var MAX_BALLS:uint = 10;
      public function BallDocumentClass() {
         var i:uint;
         for (i = 0; i < MAX_BALLS; i++) {
            tempBall = new Ball ();
            tempBall.scaleX = Math.random();
            tempBall.scaleY = tempBall.scaleX;
            tempBall.x = Math.round(Math.random() * (this.stage.stageWidth - tempBall.width));
            tempBall.y = Math.round(Math.random() * (this.stage.stageHeight - tempBall.height));
            addChild(tempBall);
         }    
      }
   }
}

4.保存q关闭这个as文档Q打开fancyBall.fla.
5.在属性面板的document class后面的输入框中输入BallDocumentClassQ保存文件?
6.试Q你会发现有10个大位|不同的元g出现在场景中?
使用Document Class允许你将代码攄在外部文件中Q而不是时间线上,可以在许许的fla文g重用代码Qƈ且在团队协作版本控制pȝ(CVS)?更容易共享代码?

ȝQ?/b>

       q篇文章只是对As3.0的一个简单应用介l,只要告诉大家如何创徏单的c,如何使用改良的侦听事件模型,如何使用document class.

Ps by egoldy:学完q篇文章Q你会发现自已也可以~写在fla中看不见一行代码的E式了,真正的是界面与代码分,控制Q看上去真的是很P如果你也在学习As3.0Q别忘了把你的心得分享一下。Cheers J.

]]>
查看完整版本 : 怎样在Flash里嵌入FlashqQ?/title><link>http://m.tkk7.com/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://m.tkk7.com/sl2cj/articles/52103.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/52103.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/52103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/52103.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/52103.html</trackback:ping><description><![CDATA[ <p class="largefont"> <font size="2">查看完整版本 : </font> <a > <font size="2">怎样在Flash里嵌入FlashqQ?/font> </a> </p> <font size="2"> <hr /> </font> <div id="d9thxlx" class="post"> <div id="vdrpdhx" class="posttop"> <div id="vnrh1xx" class="username"> <font size="2">天之翼</font> </div> <div id="dn7j3nb" class="date"> <font size="2">2005-08-08, 15:03</font> </div> </div> <div id="z9fdhvb" class="posttext"> <font size="2">做一个FLASH|站Q怎么加蝲另外的FLASH到场景里Q?br />cMMȝ效果 :confused:</font> </div> </div> <font size="2"> <hr /> </font> <div id="lbzxtxb" class="post"> <div id="h7tpxlz" class="posttop"> <div id="lpvvb7n" class="username"> <font size="2">明天</font> </div> <div id="hdlpt9h" class="date"> <font size="2">2005-08-08, 15:42</font> </div> </div> <div id="1jj59rd" class="posttext"> <font size="2">嵌入的flash做成q剪辑可以了</font> </div> </div> <font size="2"> <hr /> </font> <div id="bx79xdz" class="post"> <div id="7bz3h3l" class="posttop"> <div id="rlbplhx" class="username"> <font size="2">天之翼</font> </div> <div id="fj1f3b3" class="date"> <font size="2">2005-08-08, 15:46</font> </div> </div> <div id="7pd9bpv" class="posttext"> <font size="2">嵌入的flash做成q剪辑可以了<br /><br />q个我知道,q样会增加文件的大小Q媄响网上浏览速度?br />我想把媄片分成若q个FLASH文g载入?/font> </div> </div> <font size="2"> <hr /> </font> <div id="pbj199x" class="post"> <div id="9ndrpvt" class="posttop"> <div id="zx1jznj" class="username"> <font size="2">actionscript</font> </div> <div id="trxvhdj" class="date"> <font size="2">2005-08-08, 15:48</font> </div> </div> <div id="jfvrrv1" class="posttext"> <font size="2">单一?br />同样是loadmovie<br />载入与被载入的媄片实际大是一致的<br />当然Q被载入的媄片实际有动画的就是你图中的小U框部分<br /><br />通过在对应的层loadmovie要蝲入的q<br />可以便的实现效果</font> </div> </div> <font size="2"> <hr /> </font> <div id="hpfjv3x" class="post"> <div id="dlbx79r" class="posttop"> <div id="797xdvh" class="username"> <font size="2">天之翼</font> </div> <div id="hft3jnj" class="date"> <font size="2">2005-08-08, 17:05</font> </div> </div> <div id="jzf19jx" class="posttext"> <font size="2">单一?br />同样是loadmovie<br />载入与被载入的媄片实际大是一致的<br />当然Q被载入的媄片实际有动画的就是你图中的小U框部分<br /><br />通过在对应的层loadmovie要蝲入的q<br />可以便的实现效果<br /><br />不行Q这h个页面都在LOADQ?br />我只要小画面里显C加载数据,然后单独操作播放?/font> </div> </div> <font size="2"> <hr /> </font> <div id="xrdjfb9" class="post"> <div id="zrv19jf" class="posttop"> <div id="rllrvjh" class="username"> <font size="2">OREZ</font> </div> <div id="pvt7hr9" class="date"> <font size="2">2005-08-08, 23:53</font> </div> </div> <div id="7bfdbfj" class="posttext"> <font size="2">我也是用 loadmovieok?br />用层或者目标窗口都可以?/font> </div> </div> <font size="2"> <hr /> </font> <div id="x1xnh3f" class="post"> <div id="lfjplhb" class="posttop"> <div id="ntpf3dr" class="username"> <font size="2">天之翼</font> </div> <div id="fd73lht" class="date"> <font size="2">2005-08-09, 16:58</font> </div> </div> <div id="frpvlpl" class="posttext"> <font size="2">哈哈…………经q反复实验终于成功实现理x果?br />果然q是LoadMovie的作用,只不q要用一个媄片组建来指定位置?br />恩!q是要谢谢大家?:D</font> </div> </div> <font size="2"> <hr /> </font> <div id="htz319z" class="post"> <div id="z9vzfhd" class="posttop"> <div id="5p7lr9x" class="username"> <font size="2">天之翼</font> </div> <div id="hdz7n3v" class="date"> <font size="2">2005-08-10, 17:00</font> </div> </div> <div id="vfrz7z9" class="posttext"> <font size="2">晕……又到新问题了Q现在在FLASH模式下浏览媄片能正确加蝲嵌入。ؓ什么一导入qHTML里浏览就无法正常加蝲嵌入Q?Q?br />N脚本有错Q还是别的原因?<br /><br />LOADMOVIE的脚?br /><br />loadMovie("\\word.swf", "");<br /><br />word.swf嵌入的媄片?br />q有什么“位|”“目标”“变量”之cȝ选项都有什么做用?</font> </div> </div> <font size="2"> <hr /> </font> <div id="7z3fvtz" class="post"> <div id="vjfnz1l" class="posttop"> <div id="3bh9hdr" class="username"> <font size="2">真·大?/font> </div> <div id="x13rxv3" class="date"> <font size="2">2005-08-10, 17:39</font> </div> </div> <div id="xpxtpdr" class="posttext"> <font size="2">如果你放在同一个目录下应该是loadMovie("word.swf");<br />没有\\?br /><br />其他参数不写用默认的p?/font> </div> </div> <font size="2"> <hr /> </font> <div id="p7jp9nb" class="post"> <div id="xd79t31" class="posttop"> <div id="7zfd3t3" class="username"> <font size="2">真·大?/font> </div> <div id="p7vtxth" class="date"> <font size="2">2005-08-10, 17:45</font> </div> </div> <div id="vf7d3tz" class="posttext"> <font size="2">q有一般是在外面的flash用点语法写的<br />比如你把那个要蝲入的mc命名为aQ在外面的桢写a.loadMovie("word.swf")Q然后还能顺便定义a的大位|什么的</font> </div> </div> <font size="2"> <hr /> </font> <div id="5pdz7p9" class="post"> <div id="rjvlzdb" class="posttop"> <div id="b9lrlpl" class="username"> <font size="2">adam</font> </div> <div id="dfl73xt" class="date"> <font size="2">2005-08-10, 21:11</font> </div> </div> <div id="zxr99dr" class="posttext"> <font size="2">问题一Q如何控制被加蝲q来的SWF文g的坐标和长宽比例大小Q?br /><br />控制被加载进来的SWF文g控制光宽要采用onEnterFrameQ比如:<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 />Z么用 onEnterFrame呢?因ؓ被加载进来的的过E中Q有点gӞ如果没有onEnterFrame语句Q那么语句读取一ơ就不读取了Q然而读取了q一ơ之后,q没有加载进来,所以就会导致坐标大设|无效。同P如果加蝲到层上,也是q样的?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 />h意这两种ҎQ第一U,把外部的a2加蝲到mymc中,加在q来后,a2p动的替换了mymcQ我们直接设|mymc的属性就讄了被加蝲q来的swf的属性。第二种ҎQ_level是对于加载到旉轴上的电q引用Q加载到W?层就是_level2Q加载到W?层就是_level3?/font> </div> </div> <font size="2"> <hr /> </font> <div id="jj1tzf9" class="post"> <div id="99n3nvj" class="posttop"> <div id="fv7ppth" class="username"> <font size="2">adam</font> </div> <div id="p1hvp9l" class="date"> <font size="2">2005-08-10, 21:12</font> </div> </div> <div id="73dxtxb" class="posttext"> <font size="2">问题之二Q如何实现点L钮加载一个外部SWF文gQƈ且要昄加蝲的下载进度呢Q?br /><br />有两个方法来实现q个效果Q其一Q把加蝲londing写在L件中Q其二,被加载的子SWF文g有自qlonding。现在分别给予说明?br /><br />其一Q在L件中写londing<br /><br />外部子swf文g名ؓa1Q主文g中有一个动态文本框名ؓloadTextQ一个按钮名为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>0 && l>=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 />其二Q子文g中有自己的londing<br /><br />q个写法与前面说的londing一P只是注意一个问题就是注意\径的问题Q比如这样写Q?br /><br />W一?br /><br />loaded = getBytesLoaded();<br />total = getBytesTotal();<br />lts = Math.round((loaded/total)*100);<br />wenben = lts+"%";<br /><br />W二?br /><br />if (lts == 100) {<br />gotoAndStop(3);<br />} else {<br />gotoAndPlay(1);<br />} <br /><br />和前面的londing中介l的比较Q看Z同之处没有呢Q仅仅是L了_root因ؓ被加载后Q外部SWF文gq当于L件中的一个MC 有了_root 是指向L件的_root 了,当然会显C错误?/font> </div> </div> <font size="2"> <hr /> </font> <div id="vd9tv9x" class="post"> <div id="3b99fl9" class="posttop"> <div id="xn333lr" class="username"> <font size="2">adam</font> </div> <div id="xvf9jfr" class="date"> <font size="2">2005-08-10, 21:12</font> </div> </div> <div id="zd1llvd" class="posttext"> <font size="2">问题三:我想在舞CM个屏q,然后点击一个按钮就载入一个外部swfq行播放该怎样做呢Q?br /><br />那么我们来一起做一个相册吧。当L件蝲入后Q单L钮就载入一个外部swf 文gQƈ且都有londing昄。首先我们做好以下准备工作:Q?Q准备几张图片,现在我们准备7张,6个子文g一个一张,L件用一张。(2Q主文g舞台大小Z适应|页的需要,讄?70*420。子文g舞台大小讄?12*384Q这样就不需要蝲入后控制大小了,方便些(其实我们应当q样Q省M些麻烦?br /><br />一、制作子文g。每个都用来昄囄Q第一和第二祯写londingQ第三祯~~二十根据自q爱好做点亮度变化Q以产生动感Q最后一写上stop()。第一和第二祯的londing如下<br /><br />W一?br /><br />loaded = getBytesLoaded();<br />total = getBytesTotal();<br />lts = Math.round((loaded/total)*100);<br />wenben = "数据下蝲?"+lts+"%";<br /><br />W二?br /><br />if (lts == 100) {<br />gotoAndPlay(3);<br />} else {<br />gotoAndPlay(1);<br />} <br /><br />p样如法炮制的制作6个,分别命名为b1?.b6都发布成swf文g。保存在一个文件夹中?br /><br />二、制作主文g<br /><br />W一用来写londingQ第2放一些像屏幕一L东西Q和按钮Qؓ了增加效果,放一个音乐在旉轴上?br /><br />W一的londing//׃前面已经说得多了Q就不赘qC<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>=100) {<br />// 到满条gp出来Q否则l@?br />_root.gotoAndStop(2);<br />delete this.onEnterFrame;<br />// 使用delete的目的是当完成下载后销毁onEnterFrame事gQ以节约资源的消耗?br />}<br />};<br /><br />W?的按钮上的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 = "W?+i+"张图?;<br />} <br /><br />L懒,׃详细的赘q其含义Q?我们也可以用很长的语句来实现相同的效果,q种写法是对AS的一U浓~?/font> </div> </div> <font size="2"> <hr /> </font> <div id="jv3v3hr" class="post"> <div id="dhpbjbl" class="posttop"> <div id="9vrpl39" class="username"> <font size="2">adam</font> </div> <div id="h9z9zr9" class="date"> <font size="2">2005-08-10, 21:13</font> </div> </div> <div id="x9b39jb" class="posttext"> <font size="2">问题四:我想逐次载入多个外部文gQ当W一个蝲入播攑֮毕后Q立卌入第2个,W二个播攑֮毕后Q立卌入第3?Q……,直到l束。怎么办?<br /><br />首先对这U提问,我们先要质问一下提问的人,q样做有什么意义? 与其q样Q不如全部做C个SWF中,因ؓ每次调用一个外部SWF的时候,需要一定的旉来等待下载。当Ӟ如果你想制作一个连l剧Q播攑֮了一个后Q用londing下一集的londing画面昄“正在蝲入下集,L候”那么还是可以的?br /><br />Ҏ很简单:依照问题三的原文ӞE微修改Q去掉一个按钮,用一个按钮蝲入第一个,然后再第一个的最后一放个调用主文g中的函数卛_?br /><br />按钮Q?br /><br />on (press) {<br />loadMovie("b1.swf", "_root.mc");<br />} <br /><br />L件定义的函数<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 />W一个b1 SWF的最后一_root. go2(),W二个外部SWF的最后一?_root.go3()……?.</font> </div> </div> <font size="2"> <hr /> </font> <div id="pxvrv9v" class="post"> <div id="jbjfjnn" class="posttop"> <div id="h3dvzd9" class="username"> <font size="2">adam</font> </div> <div id="jpl399r" class="date"> <font size="2">2005-08-10, 21:15</font> </div> </div> <div id="fb3pp99" class="posttext"> <font size="2">天之翼 (http://www.v6dp.com/member.php?u=54) vbmenu_register("postmenu_70481", true); L几天,我正在给你写flash整站的教学教E!<br />不好意思!<br />q两天实在太?/font> </div> </div> <font size="2"> <hr /> </font> <div id="d993x99" class="post"> <div id="d39bnh3" class="posttop"> <div id="p3nvrbl" class="username"> <font size="2">天之翼</font> </div> <div id="nbz39j9" class="date"> <font size="2">2005-08-11, 02:46</font> </div> </div> <div id="9bxjp3p" class="posttext"> <font size="2">谢谢Qadam的回复,好复杂,我要慢慢消化Q)<br />再次感谢?:D</font> </div> </div> <font size="2"> <hr /> </font> <div id="nrlr3zz" class="post"> <div id="pn9lzrj" class="posttop"> <div id="3hdrrzz" class="username"> <font size="2">adam</font> </div> <div id="zh33v9j" class="date"> <font size="2">2005-08-11, 09:48</font> </div> </div> <div id="hx993lb" class="posttext"> <font size="2">厚厚~~Q翼也在做自q个h站点把!Q?br />我也在做Q共同努?/font> </div> </div> <font size="2"> <hr /> </font> <div id="n3l9n9r" class="post"> <div id="npzthr3" class="posttop"> <div id="39l3hl3" class="username"> <font size="2">亦韦</font> </div> <div id="33d9fz9" class="date"> <font size="2">2005-08-11, 11:34</font> </div> </div> <div id="1rnrdn9" class="posttext"> <font size="2">果然是高手,很受用!其实也不用这么麻烦,一般的效果Q应该用loadmoviep够了Q蝲入到IMC下,IMC摆放到要载入q指定位置Q再把要导入的媄片loadmovieq来p了。如果用loadmovienum<br />加蝲到层中的话,固定位置E有些麻烦,需要的朋友可以搜一下,|上相关资料很多Q本人水qx限,׃“班门弄斧”了?br /><br />下面是下载条的代码,只要攑ֈW一帧上p了,改下坐标Q长、宽度就可以用了,挺实用的^_^。(来源于网上)<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 />//一个画U条的函?br />onEnterFrame = function () { <br />var a = getBytesTotal (); <br />var b = getBytesLoaded (); <br />//取得下蝲的数?<br />if ( b < 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 />//M条横U,昄下蝲q度Q?br />} else { <br />delete onEnterFrame ; <br />b1 . removeMovieClip (); <br />b2 . removeMovieClip (); <br />b3 . removeMovieClip (); <br />play (); <br />//下蝲完毕Q删除图形和函数Q?<br />} <br />}; <br /><br />问题四:我想逐次载入多个外部文gQ当W一个蝲入播攑֮毕后Q立卌入第2个,W二个播攑֮毕后Q立卌入第3?Q……,直到l束。怎么办? <br /><br />我这Ҏ个点L放下一个的代码Q你看看有用吗?<br />旉轴上Q?br />stop();<br />i=0;//定义一个变量iQƈ且赋初gؓ0Q?br />Z个空帧,命名为:“body1_mymc”再放两个按扭向下翻늚加语法是Q?br />on(release){<br />i++;<br />if(i>15){//因ؓ外面q有9张图Q当变量大于9的时候,让变量ؓ1Q这栯够加蝲的图片是q箋的,卻I每点一ơ按扭,换一张图Q等到换到第9张图Q再Ҏ扭,则@环到W一张图Qj1.jpg到j9.jpg,因ؓ没有j0.jpg,如果i=0Q则会提C没有找到j0.jpg);<br />i=1;<br />}<br />loadMovie(("j"+i)+".jpg",body1_mymc);//从j1.jpg开始加载图片到q剪辑mymc中;<br />}<br />向上页的代码与q段相反p了?<br /><br />本h涉猎不深Q希望与大家共勉?/font> </div> </div> <font size="2"> <hr /> </font> <div id="n399x3d" class="post"> <div id="39bhvdh" class="posttop"> <div id="933999f" class="username"> <font size="2">adam</font> </div> <div id="t3hh9j9" class="date"> <font size="2">2005-08-11, 13:28</font> </div> </div> <div id="lzdr3jd" class="posttext"> <font size="2">v6是大家共同学习的地方Q不用客气!很高兴能于大家交!<br /><br />其实我认为网站的_N不在技术,而在于美术,和个人的的设计修LqI<br /><br />q也是技术再复杂都能搞定Q因为是技术,设计的页面,是不能拿来主意的Q?br /><br />我在搜房作设计师Q所以偶看看技术。但我更术设计<br /><br />希望大家能在设计一路上互相帮助Q互盔R励! 共同学习<br /><br />比我强的人多如牛毛啊Q!</font> </div> </div> <font size="2"> <hr /> </font> <div id="39tj99l" class="post"> <div id="rnjvbtd" class="posttop"> <div id="fznth93" class="username"> <font size="2">天之翼</font> </div> <div id="319vh99" class="date"> <font size="2">2005-08-12, 14:39</font> </div> </div> <div id="39x9jx9" class="posttext"> <font size="2">如果你放在同一个目录下应该是loadMovie("word.swf");<br />没有\\?br /><br />其他参数不写用默认的p?br /><br />恩,问题解决了,L\\p了,q是q个?:D 谢谢了!<br /><br />TOQadam<br />我是l公司做的网站(自己的一直想Q可没时?:( Q?br />W一ơ尝试用FLASH做全站,慢墁摸烦中………?/font> </div> </div> <font size="2"> <hr /> </font> <div id="93dnf9v" class="post"> <div id="bpt3r3d" class="posttop"> <div id="b9vj9d9" class="username"> <font size="2">xlly</font> </div> <div id="11tfb99" class="date"> <font size="2">2005-08-12, 20:39</font> </div> </div> <div id="lhvlpll" class="posttext"> <font size="2">回答的很认真很具体!虽然懂!但是Z们的_表示感谢Q?/font> </div> </div> <font size="2"> <hr /> </font> <div id="rpbpllv" class="post"> <div id="3z9x3p9" class="posttop"> <div id="999rn9t" class="username"> <font size="2">adam</font> </div> <div id="j3frffn" class="date"> <font size="2">2005-08-14, 16:45</font> </div> </div> <div id="x9jp9z9" class="posttext"> <font size="2">好的Q我们共同努力!~~?/font> </div> </div> <font size="2"> <hr /> </font> <div id="zd3l9l9" class="post"> <div id="z3lhj93" class="posttop"> <div id="lx3993b" class="username"> <font size="2">九章</font> </div> <div id="dh3znv9" class="date"> <font size="2">2005-08-17, 10:53</font> </div> </div> <div id="3fx9n3r" class="posttext"> <font size="2">借个地方跟个?br />惌教一个FLASH问题<br />我做的网?.W一|FLASH.然后我一DFLASH完了以后,<br />最后一帧是ENTER.然后我想点击q个ENTERq入到我|页的一个子面?.<br />是相对\径的..但是我怎么写代马就是进不去..怎么回事? :confused: <br />谢谢谢谢~~各位路过仙~~</font> </div> </div> <font size="2"> <hr /> </font> <div id="plfftjb" class="post"> <div id="3njvr9f" class="posttop"> <div id="blzvr3z" class="username"> <font size="2">19831110</font> </div> <div id="bnt399d" class="date"> <font size="2">2005-08-17, 17:25</font> </div> </div> <div id="fdhlzzz" class="posttext"> <font size="2">on(release){<br />getURL("q里是你的文件\?)<br />}</font> </div> </div> <font size="2"> <hr /> </font> <div id="39l9htn" class="post"> <div id="vrftn9j" class="posttop"> <div id="x399j9j" class="username"> <font size="2">九章</font> </div> <div id="3h9939t" class="date"> <font size="2">2005-08-17, 19:57</font> </div> </div> <div id="vz33z3b" class="posttext"> <font size="2">没用~~<br />说我语法错误~~<br /><br />唉~</font> </div> </div> <font size="2"> <hr /> </font> <div id="399dpf9" class="post"> <div id="3r99hdd" class="posttop"> <div id="nj193fz" class="username"> <font size="2">真·大?/font> </div> <div id="3xnzvvx" class="date"> <font size="2">2005-08-17, 20:50</font> </div> </div> <div id="9hvz99b" class="posttext"> <font size="2">你这个enter做成按钮了吗</font> </div> </div> <font size="2"> <hr /> </font> <div id="xjxn3vv" class="post"> <div id="fdhdrbr" class="posttop"> <div id="r99lhz9" class="username"> <font size="2">19831110</font> </div> <div id="9fjpbb9" class="date"> <font size="2">2005-08-18, 08:02</font> </div> </div> <div id="39r99fx" class="posttext"> <font size="2">要写在mc或者button上面``</font> </div> </div> <font size="2"> <hr /> </font> <div id="n9hdxz3" class="post"> <div id="tb3hnnn" class="posttop"> <div id="pdh3p3z" class="username"> <font size="2">Lz?/font> </div> <div id="xjxj39h" class="date"> <font size="2">2005-08-28, 00:51</font> </div> </div> <div id="3lp9f1f" class="posttext"> <font size="2">? ? 攑ֈd景也?^_^ <br /><br />mcName.onRelease = function(){<br />getURL("url.htm");<br />}</font> </div> </div> <img src ="http://m.tkk7.com/sl2cj/aggbug/52103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-12 09:04 <a href="http://m.tkk7.com/sl2cj/articles/52103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]在主q中制作外部蝲入进度条! http://m.tkk7.com/sl2cj/articles/52100.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Mon, 12 Jun 2006 00:59:00 GMThttp://m.tkk7.com/sl2cj/articles/52100.htmlhttp://m.tkk7.com/sl2cj/comments/52100.htmlhttp://m.tkk7.com/sl2cj/articles/52100.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/52100.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/52100.html[原创]在主q中制作外部蝲入进度条!

  • [原创]在主q中制作外部蝲入进度条Q?/span>

    制作loading虽然是老生常谈的话题,但很多朋友在制作flash|页的时候提q如何将加蝲外部q的进度条做在d片中Q我惌是可以简化外部媄片制作的原因吧。下面我把制作方法简单给大家介绍一下。(不知道以前有没有朋友发过此类的文章,如有雷同Q实属y合!Q??xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>

    q个源文件的演示只能看这里了Q?a target="_blank">http://yatu.512j.com

    开始制作了Q?o:p>

    Q一Q按Ctrl+F8新徏一个媄片剪辑,命名?/span> ?/font> tiao ?/font> 然后选用矩Ş工具Q从场景中心点向xZ个条形?span style="mso-spacerun: yes">如图1

    (?)

    Q二Q按Ctrl+F8新徏一个媄片剪辑,命名?/span> ?/font> loading ?/font> 按Ctrl+L打开库,刚才制作好的媄片剪?/span> ?/font> tiao ?/font> 从库中拖入场景,取实例名?/span> ?/font> jdt ?/font> ?span style="mso-spacerun: yes">如图2

    (?)

    Q三Q选择文本工具Q在属性面板中选择--动态文本框Q拉Z个文本框Q变量名?/span> ?/font> bfb ?/font> 如图3

    (?)

    Q四Q回C场景Q在W?0帧插入关键Q从库中媄片剪?/span> ?/font> loading ?/font> 拖入d景,取实例名?/span> ?/font> loading ?/font> q度条就做好了。(注意Q这里设定媄片播攑ֈW?0帧时开始加载外部动画,q个Ҏ你的q设计要求而自定)如图4

    (?)

    Q五Q新Z个层Q在W?0帧插入关键Q加入代码。如下:

    loadMovieNum("mc.swf", 2);//外部媄片mc加蝲到?

    loading.onEnterFrame = function() { //循环获得q度

    a = _level2.getBytesLoaded();//获得已下载的字节敎ͼ注意我将外部q加蝲到?

    b = _level2.getBytesTotal(); //获得整个动画字节?o:p>

    loading.bfb = int(a/b*100) add "%";//获得下蝲癑ֈ?o:p>

    loading.jdt._xscale = (a/b*100);//获得q度条横向羃攑ր?o:p>

    if (a == b) { //如果下蝲完成Q取消@环,开始播放下载的动画

    delete loading.onEnterFrame;

    tellTarget ("_level2") {

    play();

    }

    }

    };

    stop();

    本文源文件下载:[upload=rar]viewFile.asp?ID=149906[/upload]

    d画loading全部完成Q这时只差制作外部动M。在外部动画中注意第一帧加上动作stop();可以了。如果你要加上一个过度动M很简单干Q我׃l说了,自行设计?o:p>

    吖!ȝ写完了,W一ơ写q种东东Q写得比较简单,但希望能l刚接触flash的朋友些许抛砖引玉的作用?/span>



    ]]>
    用flash关闭计算?/title><link>http://m.tkk7.com/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://m.tkk7.com/sl2cj/articles/50891.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/50891.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/50891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/50891.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/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://m.tkk7.com/sl2cj/aggbug/50891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-06 20:20 <a href="http://m.tkk7.com/sl2cj/articles/50891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>按钮中蟩转场景问?/title><link>http://m.tkk7.com/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://m.tkk7.com/sl2cj/articles/50162.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/50162.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/50162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/50162.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/50162.html</trackback:ping><description><![CDATA[on(release)<br />  {<br />    tellTarget("_root")<br />   {<br />      gotoAndPlay("SceneName",1);<br />   }<br /> }<br />首先Q直接写gotoAndPlay()肯定是不行的Q因Z是在一个mc中的按钮<br />q样写,goto语句作用的是mcQ而不是_root<br />但是写成_root.gotoAndPlay("SceneName",1);也不?br />因ؓmc.gotoAndPlay();没有带场景参数的函数原型Q只有mc.gotoAndPlay(frame);<br />只有单独使用gotoAndPlay()才有gotoAndPlay(scene,frame)的用?br />所以采取这U折L办法<br />用tellTarget()<br />既可以确保作用对象是_root.而非mc,也可以单独用gotoAndPlay()语句<img src ="http://m.tkk7.com/sl2cj/aggbug/50162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-03 19:30 <a href="http://m.tkk7.com/sl2cj/articles/50162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>两个按钮Q一个是“暂停”,一个是“播䏀,点击暂停音乐停,Ҏ攑֐Q从暂停的位|开始播?http://m.tkk7.com/sl2cj/articles/49057.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 30 May 2006 09:06:00 GMThttp://m.tkk7.com/sl2cj/articles/49057.htmlhttp://m.tkk7.com/sl2cj/comments/49057.htmlhttp://m.tkk7.com/sl2cj/articles/49057.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/49057.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/49057.html   可以用加载声x件的ҎQ?
    W一帧:mysound= new Sound();
    mysound.attachSound(声音id名字);
    ptime = 0;
    播放按钮asQ?
    on(release){
    mysound.start(ptime);
    }
    暂停按钮asQ?
    on(release){
    ptime = mysound.position/1000;
    mysound.stop();
    }

    ]]>
    Play_btnhttp://m.tkk7.com/sl2cj/articles/48929.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 30 May 2006 04:25:00 GMThttp://m.tkk7.com/sl2cj/articles/48929.htmlhttp://m.tkk7.com/sl2cj/comments/48929.htmlhttp://m.tkk7.com/sl2cj/articles/48929.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/48929.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/48929.html

    ]]>
    修正Flash MX 2004 UI2lg带来的getNextHighestDepth 2005-07-01 15:08:19 http://m.tkk7.com/sl2cj/articles/47706.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 23 May 2006 12:08:00 GMThttp://m.tkk7.com/sl2cj/articles/47706.htmlhttp://m.tkk7.com/sl2cj/comments/47706.htmlhttp://m.tkk7.com/sl2cj/articles/47706.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/47706.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/47706.html
    修正Flash MX 2004 UI2lg带来的getNextHighestDepth    2005-07-01 15:08:19

    Flash MX 2004?UI2lg带来一个bug 是Q舞C或者库里存在UI2lgQ用_root.getNextHighestDepth();得出来的值就是大于或者等?048576了,换句话说getNextHighestDepth()q个命o在这里就是失效了.此时所获得的层的深度就已经出了Flash层的动态区Q??048575Q。所有存攑֜出动态区的MC都是无法用removeMovieClip()删除?
    原因是因ؓ插入UI2lg或者在库中存放有UI2lg的时?flash会自动在_root里的层动态区里的最高两个层里添加两个看不见的mc:_level0.reserved和_level0.focusManager ?
    trace(_root.getInstanceAtDepth(1048575));
    ?
    trace(_root.getInstanceAtDepth(1048574));
    可以看?
    解决Ҏ是在_rootW一帧动作的最前面增加
    _root.reserved.swapDepths(0);?
    _root.focusManager.swapDepths(1)q两个语?然后
    trace(_root.getNextHighestDepth());
    可以得到是3而不?048576?


    ]]>
    Flash 区块游戏开?/title><link>http://m.tkk7.com/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://m.tkk7.com/sl2cj/articles/46875.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/46875.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/46875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/46875.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/46875.html</trackback:ping><description><![CDATA[     摘要: Z么用方块Q?在开始埋头编写代码之前,让我们稍微谈谈区?方块游戏Qtile based gamesQ。ؓ什么要使用方块Q是区块游戏更容易制作吗Q或许还是他们比Z艺术的游?art based games)更复杂?Flash适合区块游戏吗? 在很久很久以前,方块技术已l被应用到游戏制作中。那时候,电脑q没有上GHz的cpuQ没有上百MB的内存。缓慢的速度、有限的内存意味着Q游戏制作者不得不...  <a href='http://m.tkk7.com/sl2cj/articles/46875.html'>阅读全文</a><img src ="http://m.tkk7.com/sl2cj/aggbug/46875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-05-18 18:10 <a href="http://m.tkk7.com/sl2cj/articles/46875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flash游戏开发常用函C?/title><link>http://m.tkk7.com/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://m.tkk7.com/sl2cj/articles/46861.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/46861.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/46861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/46861.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/46861.html</trackback:ping><description><![CDATA[<p><font face="Arial"><strong>■■■对象数l?/strong> <br />比如要构Z个有很多属性的数组Q简单的可以q样做:<br />2004 代码Q?br />var a:Array = new Array(); <br />for (var i = 0; i<10; i++) { <br />    a[i] = new Object(); <br />    a[i].x = 10; <br />    a[i].y = 10*i; <br />    a[i].name = "---"; <br />    a[i].id = i; <br />    // 随便你给什么属性啊?<br />} <br />////先用局部变量存储对象会更好一炏V?br />var a=new Array()<br />for(var i=0;i<10;i++){<br />var ta=new Object();<br />ta.x=10;<br />ta.y=10;<br />ta.name="n"+i;<br />a.push(ta);<br />}<br />////或者更便一点的ҎQ?br />var a=new Array()<br />for(var i=0;i<10;i++){<br />a[i]={x:10,y:10,name:"n"+i}<br />}</font></p> <p><font face="Arial"></font></p> <p><font face="Arial"><strong>■■■程序控制角色运?/strong> <br />下面q段代码控制 MovieClip mc ?(50,50) 横向q动?100,50) 停止Q速度?5 pixelQ?br />mc._x = mc._y=50; <br />mc.onEnterFrame = function() { <br />    _x += 5; <br />    trace(_x); <br />    if (_x == 100) { <br />        delete (mc.onEnterFrame); <br />    } <br />}; </font></p> <font face="Arial"> <p><br /><strong>■■■精计?<br /></strong>我们讑֮了时间ؓ 60 U,然后通过 setInterval 来定期(?000millisecondsQ触发一个函?runTimer?br />function runTimer 用来计时Q当旉C以后Q{L?outThere?br />function outThere 用来处理旉C以后的动作,不要忘记 clearInterval(intervalID)Q停止计时?br />var time:Number = 60; <br />var intervalID:Number; <br />intervalID = setInterval(runTimer, 1000); <br />function runTimer() { <br />    time--; <br />    trace(time); <br />    if (time == 0) { <br />        outThere(); <br />    } <br />} <br />function outThere() { <br />    // blah blah blah <br />    clearInterval(intervalID); <br />} </p> <p><strong></strong></p> <p><strong>■■■找到目前最的一个可用的深度 DepthQ来自国外) <br /></strong>针对 Flash Player 6 的:<br />availTopDepth = function () { <br />    var allDepths = []; <br />    for (var z in _root) { <br />        if (_root[z] instanceof Button || _root[z] instanceof MovieClip || _root[z] instanceof TextField) { <br />            allDepths.push(_root[z].getDepth()); <br />        } <br />    } <br />    if (allDepths.length != 0) { <br />        sortAll = function (a, b) { if (ab) {return 1;} else {return 0;}}; <br />        allDepths.sort(sortAll); <br />        return (parseInt(allDepths[allDepths.length-1])+1); <br />    } <br />}; <br />trace(_root.availTopDepth()); <br />攄一?MovieClip ?StageQ再执行q段 Action ׃得到最q的一个可用深度。我们也可以用这个来创徏l对?/p> <p>会出问题?MovieClipQ比如:<br />_root.createEmptyMovieClip("mc_name", availTopDepth());<br />getNextHighestDepth() 以及 getInstanceAtDepth(depth)?for player 7 的?/p> <p><strong></strong></p> <p><strong>■■■鼠标消?br /></strong>鼠标消隐之后Q右健弹单,鼠标又出现了,q且一直保留着~<br />完整的解x法是Q在 左健抬v、右健第二次抬v、回车键抬v的时候再ơ消隐鼠标?br />完整的方法比较复杂,下面是一个简单的解决ҎQ可以解决绝大多数的问题Q?br />onEnterFrame=function(){<br /> if(Key.isDown(1)|| Key.isDown(Key.ENTER)){<br />  Mouse.hide();<br /> }<br />}</p> <p><strong></strong></p> <p><strong>■■■我常用的一个加速度Ud的代?br /></strong>//以下代码攑ֈd景第一?br />stop();<br />_global.a = 5;<br />//Ud加速度,大慢<br />_global.click_x = 0;<br />//用来记录点击鼠标的位|?br />_global.click_y = 0;<br />_root.onMouseDown = function() {<br /> _global.click_x = _root._xmouse;<br /> _global.click_y = _root._ymouse;<br /> //me是受控mc的instance name<br /> me.onEnterFrame = function() {<br />  if (Math.abs(_global.click_x-me._x)<2 && Math.abs(_global.click_y-me._y)<2) {<br />   //如果已经基本Ud了鼠标点q的位置取消这个事件句柄的响应E序<br />   delete (this.onEnterFrame);<br />   return;<br />  } else {<br />   //控制Ud<br />   me._x += (_global.click_x-me._x)/_global.a;<br />   me._y += (_global.click_y-me._y)/_global.a;<br />  }<br /> };<br />};<br />//////以下部分可?br />//a_v是个可以输入的文本框,用来输入加速度,卛_以自定义速度,方便调试<br />a_v.onChanged = function() {<br /> if (a_v.text == "" || Number(a_v.text)>1000 || Number(a_v.text)<0) {<br />  //default value<br />  a_v.text = 5;<br /> } else {<br />  _global.a = Number(a_v.text) ? Number(a_v.text) : 5;<br />  //trace(_global.a);<br /> }<br />};</p> <p> </p> <p><strong></strong></p> <p><strong>■■■随??00而不从复的语句~~~ <br /></strong>seq = new Array(100);<br />pArray = new Array(100);<br />function makeRandom() {<br /> for (i=1; i<=100; i++) {<br />  seq[i] = "A";<br /> }<br />}<br />function mRandom() {<br /> while (true) {<br />  n = int(random(100))+1;<br />  if (seq[n] == "A") {<br />   seq[n] = "0";<br />   break;<br />  }<br /> }<br /> return (n);<br />}<br />function rArray() {<br /> for (i=1; i<=100; i++) {<br />  pArray[i] = mRandom();<br />  trace(pArray[i]);<br /> }<br />}<br />stop();</p> <p><strong></strong></p> <p><strong>■■■偷梁换柱~~~ <br /></strong>我们可以用这样一个技巧,在某些函数外部加一些东西而不需要了解函数的代码~~<br />比如Q假如当前有很多mc 覆盖了onEnterFrame函数Q我们可以这样了解那些在_root下的mc 的onEnterFrame?/p> <p>数是以什么顺序执行的Q?br />代码:<br />for(var i in _root){<br />    if(_root[i].onEnterFrame != null){//如果q个Object实现了onEnterFrame接口的话<br />        _root[i].oldFunc  = _root[i].onEnterFrame;//首先保存原来的onEnterFrame的句?br />        _root[i].onEnterFrame = function(){//然后开始替换了~~加上一层壳~~<br />            trace(this+ ": onEnterFrame Called.");<br />            this.oldFunc();//我们用保留的句柄调用原来的函?br />            trace(this+ ": onEnterFrame Returned.");<br />        }<br />    }<br />}<br />如果要取消这些附加的操作Q?br />代码:<br />for(var i in _root){<br />    if(_root[i].oldFunc!= null){//如果发现改过得痕q?br />        _root[i].onEnterFrame = _root[i].oldFunc;<br />        delete(oldFunc);<br />    }<br />}<br />呵呵q些操作的关键在?flash里面的引用机?<br />所有函数名都是引用Q而函数本w是在数据的vz里面的。如果没有Q何变量引用他Q他׃被回收。如果有Q?/p> <p>他就不会被回收。所以有着样一个有的事情Qdelete函数不会删掉M东西Q除了要求删掉的那个名字Q(和java</p> <p>机制怼Q而和C不同Q?/p> <p>a= function(){trace("Function a called");}<br />b=a;<br />delete(a);//除了aq个名字被删掉以外,没有M事情发生<br />b();</p> <p>函数通过this得到其调用者的实例?/p> <p> </p> <p><strong>■■■MovieClipPlus.as<br /></strong>定义了一些简单的MC操作<br />//ȝQ由于flash没有ȝQ那我们q短线<br />MovieClip.prototype.point = OxMovieClipPoint;<br />function OxMovieClipPoint(x, y) {<br /> this.moveTo(x, y);<br /> this.lineTo(x+1, y);<br />}<br />//ȝ?左上角x1,y1 右下角x2,y2, 颜色rgbQ?不透明度alpha<br />MovieClip.prototype.rect = OxMovieClipRect;<br />function OxMovieClipRect(x1, y1, x2, y2, rgb, alpha) {<br /> this.beginFill(rgb, alpha);<br /> this.moveTo(x1, y1);<br /> this.lineTo(x1, y2);<br /> this.lineTo(x2, y2);<br /> this.lineTo(x2, y1);<br /> this.lineTo(x1, y1);<br /> this.endFill();<br />}<br />//d:q么bt的冬冬当然不是我写的Q作者素Jody Keating<br />//圆心x,y Q半径r<br />MovieClip.prototype.circle = OxMovieClipCircle;<br />function OxMovieClipCircle(x, y, r) {<br /> var a = r*0.414213562;<br /> var b = r*0.707106781;<br /> this.moveTo(x+r, y);<br /> this.curveTo(x+r, y-a, x+b, y-b);<br /> this.curveTo(x+a, y-r, x, y-r);<br /> this.curveTo(x-a, y-r, x-b, y-b);<br /> this.curveTo(x-r, y-a, x-r, y);<br /> this.curveTo(x-r, y+a, x-b, y+b);<br /> this.curveTo(x-a, y+r, x, y+r);<br /> this.curveTo(x+a, y+r, x+b, y+b);<br /> this.curveTo(x+r, y+a, x+r, y);<br />}</p> <p><strong></strong></p> <p><strong>■■■两炚w的直U移?br /></strong>var s = 15;<br />_root.onMouseDown = function() {<br /> var oldM_x = _root._xmouse;<br /> var oldM_y = _root._ymouse;<br /> ax = aa._x;<br /> ay = aa._y;<br /> dis = Math.sqrt((oldM_x-ax)*(oldM_x-ax)+(oldM_y-ay)*(oldM_y-ay));<br /> xa = (oldM_x-ax)/dis;<br /> ya = (oldM_y-ay)/dis;<br /> amove();<br />};<br />function amove() {<br /> onEnterFrame = function () {<br />  aa._x += s*xa;<br />  aa._y += s*ya;<br />  if (Math.sqrt((aa._x-ax)*(aa._x-ax)+(aa._y-ay)*(aa._y-ay))>dis) {<br />   delete onEnterFrame;<br />  }<br /> };<br />}</p> <p><strong></strong></p> <p><strong>■■■计两个对象之?两点之间的距?注册?<br /></strong>function getDistanceOf(target1, target2, x2, y2) {<br /> if (arguments.length == 4) {<br />  dx = x2-target1;<br />  dy = y2-target2;<br /> } else if (arguments.length == 2) {<br />  dx = target2._x-target1._x;<br />  dy = target2._y-target1._y;<br /> }<br /> return Math.sqrt(dx*dx+dy*dy);<br />}<br />//Arguments 对象是一个数l,其中包含作ؓ参数传递给M函数的倹{每ơ在动作脚本中调用函数时Q都会ؓ该函</p> <p>数自动创?Arguments 对象。同时还会创Z个局部变?argumentsQ您可引用 arguments 对象?</p> <p><strong></strong></p> <p><strong>■■■让播放的MC暂停一D|?/strong> <br />function pausePlay(sec) { <br />   pfunc = function () { <br />      this.play(); <br />      clearInterval(this.pint); <br />   } <br />   stop(); <br />   this.pint = setInterval(this, "pfunc", sec*1000); <br />} <br />//q样调用.sec是暂停的旉,单位是秒. <br />pausePlay(2); </p> <p> </p> <p> </p> <p><strong>■■■onHitTest(target),自己写的一个MC事g,当该MC与指定的MC hitTest的时候触发事?其实也没什么特别的地方,一样也是用setInterval来实?br /></strong>stop(); <br />MovieClip.prototype.listen = function(target) { <br />    if (this.isHiting == undefined) { <br />        this.isHiting = this.hitTest(target); <br />    } <br />    if (this.hitTest(target)) { <br />        if (this.isHiting == false) { <br />            this.broadcastMessage("onHitTest", this, target);//q播事g,l事件传递this和target两个参数 <br />        } <br />        this.isHiting = true; <br />    } else { <br />        this.isHiting = false; <br />    } <br />};//为MovieClipd域成员listen成员,用于监视当前对象与目标是否碰?<br />MovieClip.prototype.watch = function(target) { <br />    this.timer = setInterval(this, "listen", 50, target); <br />};//以每50毫秒一ơ的速度来检是否碰?<br />MovieClip.prototype.unWatch = function() { <br />    clearInterval(this.timer); <br />};//停止对对象的监视 <br />ASBroadcaster.initialize(MovieClip.prototype);//初始化MovieClip原型Z件源 </p> <p>//下面是调用的CZ </p> <p>//假设有两个MovieClip,左边ball,双wall,让ball不断往wallUd,同时监视wall,一旦击中触发事件onHitTest </p> <p>ball.onEnterFrame = function() { <br />    this._x += 5; <br />};//让ball不断往xUd?<br />myListener = new Object(); <br />myListener.onHitTest = function(source,target){ <br />    trace("The " + source._name + " hit " + target._name + "."); <br />}; <br />ball.addListener(myListener);//创徏监听员ƈ注册lball <br />ball.watch(wall);//让ball监视wall </p> <p> </p> <p><strong>■■■MD5 32位码的FLASH法</strong> <br />//-----------<br />function md5(s) {<br /> return binl2hex(core_md5(str2binl(s), s.length*strsize));<br />}<br />function core_md5(x, len) {<br /> x[len >> 5] = (x[len >> 5]) | (128 << len%32);<br /> x[(((len+64) >>> 9) << 4)+14] = len;<br /> var a = 1732584193;<br /> var b = -271733879;<br /> var c = -1732584194;<br /> var d = 271733878;<br /> var i = 0;<br /> while (i  var olda = a;<br />  var oldb = b;<br />  var oldc = c;<br />  var oldd = d;<br />  a = md5_ff(a, b, c, d, x[i+0], 7, -680876936);<br />  d = md5_ff(d, a, b, c, x[i+1], 12, -389564586);<br />  c = md5_ff(c, d, a, b, x[i+2], 17, 606105819);<br />  b = md5_ff(b, c, d, a, x[i+3], 22, -1044525330);<br />  a = md5_ff(a, b, c, d, x[i+4], 7, -176418897);<br />  d = md5_ff(d, a, b, c, x[i+5], 12, 1200080426);<br />  c = md5_ff(c, d, a, b, x[i+6], 17, -1473231341);<br />  b = md5_ff(b, c, d, a, x[i+7], 22, -45705983);<br />  a = md5_ff(a, b, c, d, x[i+8], 7, 1770035416);<br />  d = md5_ff(d, a, b, c, x[i+9], 12, -1958414417);<br />  c = md5_ff(c, d, a, b, x[i+10], 17, -42063);<br />  b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);<br />  a = md5_ff(a, b, c, d, x[i+12], 7, 1804603682);<br />  d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);<br />  c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);<br />  b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);<br />  a = md5_gg(a, b, c, d, x[i+1], 5, -165796510);<br />  d = md5_gg(d, a, b, c, x[i+6], 9, -1069501632);<br />  c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);<br />  b = md5_gg(b, c, d, a, x[i+0], 20, -373897302);<br />  a = md5_gg(a, b, c, d, x[i+5], 5, -701558691);<br />  d = md5_gg(d, a, b, c, x[i+10], 9, 38016083);<br />  c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);<br />  b = md5_gg(b, c, d, a, x[i+4], 20, -405537848);<br />  a = md5_gg(a, b, c, d, x[i+9], 5, 568446438);<br />  d = md5_gg(d, a, b, c, x[i+14], 9, -1019803690);<br />  c = md5_gg(c, d, a, b, x[i+3], 14, -187363961);<br />  b = md5_gg(b, c, d, a, x[i+8], 20, 1163531501);<br />  a = md5_gg(a, b, c, d, x[i+13], 5, -1444681467);<br />  d = md5_gg(d, a, b, c, x[i+2], 9, -51403784);<br />  c = md5_gg(c, d, a, b, x[i+7], 14, 1735328473);<br />  b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);<br />  a = md5_hh(a, b, c, d, x[i+5], 4, -378558);<br />  d = md5_hh(d, a, b, c, x[i+8], 11, -2022574463);<br />  c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);<br />  b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);<br />  a = md5_hh(a, b, c, d, x[i+1], 4, -1530992060);<br />  d = md5_hh(d, a, b, c, x[i+4], 11, 1272893353);<br />  c = md5_hh(c, d, a, b, x[i+7], 16, -155497632);<br />  b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);<br />  a = md5_hh(a, b, c, d, x[i+13], 4, 681279174);<br />  d = md5_hh(d, a, b, c, x[i+0], 11, -358537222);<br />  c = md5_hh(c, d, a, b, x[i+3], 16, -722521979);<br />  b = md5_hh(b, c, d, a, x[i+6], 23, 76029189);<br />  a = md5_hh(a, b, c, d, x[i+9], 4, -640364487);<br />  d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);<br />  c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);<br />  b = md5_hh(b, c, d, a, x[i+2], 23, -995338651);<br />  a = md5_ii(a, b, c, d, x[i+0], 6, -198630844);<br />  d = md5_ii(d, a, b, c, x[i+7], 10, 1126891415);<br />  c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);<br />  b = md5_ii(b, c, d, a, x[i+5], 21, -57434055);<br />  a = md5_ii(a, b, c, d, x[i+12], 6, 1700485571);<br />  d = md5_ii(d, a, b, c, x[i+3], 10, -1894986606);<br />  c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);<br />  b = md5_ii(b, c, d, a, x[i+1], 21, -2054922799);<br />  a = md5_ii(a, b, c, d, x[i+8], 6, 1873313359);<br />  d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);<br />  c = md5_ii(c, d, a, b, x[i+6], 15, -1560198380);<br />  b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);<br />  a = md5_ii(a, b, c, d, x[i+4], 6, -145523070);<br />  d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);<br />  c = md5_ii(c, d, a, b, x[i+2], 15, 718787259);<br />  b = md5_ii(b, c, d, a, x[i+9], 21, -343485551);<br />  a = safe_add(a, olda);<br />  b = safe_add(b, oldb);<br />  c = safe_add(c, oldc);<br />  d = safe_add(d, oldd);<br />  i = i+16;<br /> }<br /> return Array(a, b, c, d);<br />}<br />function md5_cmn(q, a, b, x, s, t) {<br /> 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 /> return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);<br />}<br />function md5_gg(a, b, c, d, x, s, t) {<br /> return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);<br />}<br />function md5_hh(a, b, c, d, x, s, t) {<br /> return md5_cmn((b ^ c) ^ d, a, b, x, s, t);<br />}<br />function md5_ii(a, b, c, d, x, s, t) {<br /> return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);<br />}<br />function safe_add(x, y) {<br /> var lsw = (x & 65535)+(y & 65535);<br /> var msw = ((x >> 16)+(y >> 16))+(lsw >> 16);<br /> return (msw << 16) | (lsw & 65535);<br />}<br />function bit_rol(num, cnt) {<br /> return (num << cnt) | (num >>> (32-cnt));<br />}<br />function str2binl(str) {<br /> var bin = Array();<br /> var mask = (1 << strsize)-1;<br /> var i = 0;<br /> while (i<(str.length*strsize)) {<br />  bin[i >> 5] = (bin[i >> 5]) | ((str.charCodeAt(i/strsize) & mask) << i%32);<br />  i = i+strsize;<br /> }<br /> return bin;<br />}<br />function binl2hex(binarray) {<br /> if (hexcase) {<br /> } else {<br /> }<br /> var hex_tab = "0123456789abcdef";<br /> var str = "";<br /> var i = 0;<br /> while (i<(binarray.length*4)) {<br />  str = str+(hex_tab.charAt(((binarray[i >> 2]) >> ((i%4*8)+4)) & 15)+hex_tab.charAt(((binarray[i </p> <p>>> 2]) >> (i%4*8)) & 15));<br />  i++;<br /> }<br /> return str;<br />}<br />var hexcase = 0;<br />var strsize = 8;<br />//--------以上不用修改Q?br />b = md5("xx");<br />//xx可设ZQ意字W?br />s = b.toUpperCase();<br />//转换成大?br />trace(b);<br />trace(s);</p> <p> </p> <p><strong>■■■发点缓动函?br /></strong>Math.linearTween = function(t, b, c, d) {<br /> return c*t/d+b;<br />};<br />//U性运动函?br />Math.easeInQuad = function(t, b, c, d) {<br /> return c*(t /= d)*t+b;<br />};<br />//二次~入函数<br />Math.easeOutQuad = function(t, b, c, d) {<br /> return -c*(t /= d)*(t-2)+b;<br />};<br />//二次~出函数<br />Math.easeINOutQuad = function(t, b, c, d) {<br /> if ((t /= d/2)<1) {<br />  return c/2*t*t+b;<br /> }<br /> return -c/2*((--t)*(t-2)-1)+b;<br />};<br />//二次~入~出函数<br />Math.easeInCubic = function(t, b, c, d) {<br /> return c*Math.pow(t/d, 3)+b;<br />};<br />//三次~入函数<br />Math.easeOutCubic = function(t, b, c, d) {<br /> return c*(Math.pow(t/d-1, 3)+1)+b;<br />};<br />//三次~出函数<br />Math.easeINOutCubic = function(t, b, c, d) {<br /> if ((t /= d/2)<1) {<br />  return c/2*Math.pow(t, 3)+b;<br /> }<br /> return c/2*(Math.pow(t-2, 3)+2)+b;<br />};<br />//三次~入~出函数<br />Math.easeInQuart = function(t, b, c, d) {<br /> return c*Math.pow(t/d, 4)+b;<br />};<br />//四次~入函数<br />Math.easeOutQuart = function(t, b, c, d) {<br /> return -c*(Math.pow(t/d-1, 4)-1)+b;<br />};<br />//四次~出函数<br />Math.easeINOutQuart = function(t, b, c, d) {<br /> if ((t /= d/2)<1) {<br />  return c/2*Math.pow(t, 4)+b;<br /> }<br /> return -c/2*(Math.pow(t-2, 4)-2)+b;<br />};<br />//四次~入~出函数<br />Math.easeInQuint = function(t, b, c, d) {<br /> return c*Math.pow(t/d, 5)+b;<br />};<br />//五次~入函数<br />Math.easeOutQuint = function(t, b, c, d) {<br /> return c*(Math.pow(t/d-1, 5)+1)+b;<br />};<br />//五次~出函数<br />Math.easeINOutQuint = function(t, b, c, d) {<br /> if ((t /= d/2)<1) {<br />  return c/2*Math.pow(t, 5)+b;<br /> }<br /> return c/2*(Math.pow(t-2, 5)+2)+b;<br />};<br />//五次~入~出函数<br />Math.easeInSine = function(t, b, c, d) {<br /> return c*(1-Math.cos(t/d*(Math.PI/2)))+b;<br />};<br />//正u~出函数<br />Math.easeOutSine = function(t, b, c, d) {<br /> return c*Math.sin(t/d*(Math.PI/2))+b;<br />};<br />//正u~出函数<br />Math.easeINOutSine = function(t, b, c, d) {<br /> return c/2*(1-Math.cos(Math.PI*t/d))+b;<br />};<br />//正u~入~出函数<br />Math.easeInExpo = function(t, b, c, d) {<br /> return c*Math.pow(2, 10*(t/d-1))+b;<br />};<br />//指数~入函数<br />Math.easeOutExpo = function(t, b, c, d) {<br /> return c*(-Math.pow(2, -10*t/d)+1)+b;<br />};<br />//指数~出函数<br />Math.easeINOutExpo = function(t, b, c, d) {<br /> if ((t /= d/2)<1) {<br />  return c/2*Math.pow(2, 10*(t-1))+b;<br /> }<br /> return c/2*(-Math.pow(2, -10*--t)+2)+b;<br />};<br />//指数~入~出函数<br />Math.easeInCirc = function(t, b, c, d) {<br /> return c*(1-Math.sqrt(1-(t /= d)*t))+b;<br />};<br />//圆Ş~入函数<br />Math.easeOutCirc = function(t, b, c, d) {<br /> return c*Math.sqrt(1-(t=t/d-1)*t)+b;<br />};<br />//圆Ş~出函数<br />Math.easeINOutCirc = function(t, b, c, d) {<br /> if ((t /= d/2)<1) {<br />  return c/2*(1-Math.sqrt(1-t*t))+b;<br /> }<br /> return c/2*(Math.sqrt(1-(t -= 2)*t)+1)+b;<br />};<br />//圆Ş~入~出函数</p> </font><img src ="http://m.tkk7.com/sl2cj/aggbug/46861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-05-18 17:12 <a href="http://m.tkk7.com/sl2cj/articles/46861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Movie Clip 的深度问?/title><link>http://m.tkk7.com/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://m.tkk7.com/sl2cj/articles/46542.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/46542.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/46542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/46542.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/46542.html</trackback:ping><description><![CDATA[<p>“朝闻道夕d?rdquo;Q最q越来越q体会了这句话。h是Zq求真理而活Q一旦悟透了真理Qh生也没有Q何遗憾了。这L心情很符合解x术问题后的那U满x?/p> <p>最q遇C一个不大不的问题Q发现手动拖到时间u上的 mc 不能在脚本中删除Q一时搞不懂是ؓ什么。后来了解到 mc 的深度是有学问的Q一共可分ؓ 3 个大块,分别是:</p> <p>1、时间u区(深度范围 -16 384 ~ -1Q?/p> <p>q个区域是用来放|在设计器中生成的那些元素,q个区域里的 mc 是不能用脚本删除的。但是脚本创建的 mc 可以制定到这个深度范围中Q这样也׃能删除了?/p> <p>q就可以解答好多现象Q比如脚本创建的 mc 一般M在设计器创徏的之上,因ؓ你死也不会想到深度制定在于 -16 384? q且大于???? -16 390Q低?-16 38x ?的深度不存在Q不会被创徏Q的范围内才可以攑ֈ设计器创建的 mc 下面。ƈ且我前面的问题也׃难解释了?/p> <p>解决删除问题也不难,只要把那个深h沼的 mc 换出来,再杀掉就 ok 了。具体点是先是?swapDepths() Ҏ来个乑֝大挪U,再用 removeMovieClip() 接上一际独孤九剑,于是世界清静了?/p> <p>Q注Q在用户卡片的制作中我用C swapDepths()Q用来解军_d的卡片会攄在最上层。)</p> <p>现在xQ以前做的那?Banner 甚至没有 0 的突_所?mc ?Depth 都是负数Q呵c?/p> <p>2、动态区Q深度范?0 ~ 1 048 575Q?/p> <p>q是个脚本可以肆意妄为的世界Q可以直接用独孤九剑决定Q?mc 的生死,不用Ҏ费力的乾坤大挪移了?/p> <p>3、保留区Q深度范?1 048 576 ~ 2 130 690 045Q?/p> <p>我想q个区域的存在目的就是ؓ了确保深度超q?1 048 575 后,创徏?mc 仍然有地方储存。要惛_除这区域里的 mc 的话Q还是要先拖到动态区去,然后是砍头还是腰斩随便你。(把动态区形容的有点像刑场Q呵呵)</p> <p>q就?Flash 深度框架的所以然QM上感觉还是挺牛的Q用好了可以呼风唤雨,用不好就只能到处受气?/p> <p>M是q么点事Q把以后会忘Q所以记在这里。忘了解决的Ҏ是小Q忘了闻道时的喜悦就遗憾x了?/p><img src ="http://m.tkk7.com/sl2cj/aggbug/46542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-05-17 09:41 <a href="http://m.tkk7.com/sl2cj/articles/46542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己动手制作手机Flash主题动画http://m.tkk7.com/sl2cj/articles/45679.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 11 May 2006 08:57:00 GMThttp://m.tkk7.com/sl2cj/articles/45679.htmlhttp://m.tkk7.com/sl2cj/comments/45679.htmlhttp://m.tkk7.com/sl2cj/articles/45679.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/45679.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/45679.html自己动手制作手机Flash主题动画

    原文地址:http://soft.yesky.com/SoftChannel/72351185150935040/20050316/1922681.shtml

      现在手机已成为时下数码领域里的热门话题,很多数码发烧友都用上了高端智能手机ƈ致力于应用方面的研究。顺应热潮,Macromedia公司也开发了在手Z应用的Flash动画播放器:Flash Lite 1.1。最初这个播攑֙只能应用于i-mode手持讑֤Q后来烦爱、诺Z品牌的一些手Z能用这个播攑֙了。在今年市面上已l可以看到捆l了Flash Lite 1.1的手机,其是三星手机和Macromedia达成了合作协议,全面支持Flash Lite 1.1?

     

      既然手机上能够用Flash动画主题Q很多喜ƢFlash的朋友一定会问,我们该怎么制作呢?Flash MX Pro 2004提供了一些现成的工具用来制作手机上的Flash动画主题Q今天我们就一LFlash MX Pro 2004制作一个简单的手机动画主题Q从而了解基本流E和Ҏ?/font>

      背景知识QFlash Lite 的应用条?/font>

      Flash Lite是类gFlash 4.0的手机用E序Qؓ什么是Flash4q么早的版本呢?毕竟手机pȝ的CPU不能和电脑相比,要在手机上畅快的q行Flash动画必须对SWF文g有所限制Q限制的内容主要在于Q文件体U不过20kQ不能用手Z支持的字体,不支持复杂的ActionScriptQ动d@环,q多的层、元素,不要使用囑Ş元素以及透明效果{等。由于上q的U种条gQ用Flash MX Pro 2004创作的Flash动画最好用Tweenl合、关键动画、用手机内|的字体、优化\径等{?br />
      手机Flash主题动画制作 

      一、准备手Z题素?/font>

      Ҏ要求设计的手机动作非常简单,因此我们可用画面丰富的囄l合创作单的动画效果。素材图片的大小要根据设计的手机主题的机型来军_Q打开Flash MX Pro 2004Q选择从模板新Z个文Ӟ可看到移动设备模杉K项Q图1Q?/font>


    ?

      Ud讑֤模板提供了多U品牌手机的模板Q这些都是直接能够在手机上运行的QMacromedia与其达成的合作)Q我们选择市面上比较普遍的诺基?650手机模板Q确定后q回Flash~辑的主场景可以看到手机的外观,在层面板上还可看到动画都要基于模板定义的寸Q图2Q,诺基?650的显C屏寸?76*208像素?/font>


    ?

       q样我们需要准备的是一张作Z题背景的176*208像素的图片,从网上搜索到一张漂亮的囑֐可以使用Fireworks工具~辑或直接进行剪裁(?Q?/font>


    ?

      下面是要准备手机主题动画上的图标Q如电话、聊天、游戏等{手机各个功能的图标Q图4Q,把这几个图标单独制作成小图,然后再用Fireworks在原囄基础上进行细微的修改Q制作鼠标划q的效果?/font>


    ?

      二、手Z题动d?/font>

      把素材导入到Flash MX Pro 2004的库中,首先把背景图片放C场景中,图片的位置调整?*0Q图5Q?/font>


    ?

      下面分别建立几个按钮元素Q把每个图标制作成按钮用事先准备好的两种效果l合h成ؓ鼠标划过的动L果(?Q?/font>


    ?

      把这几个按钮拖到d景中排列好,然后使用文字工具分别l这几个工具d中文的文字描qͼ注意字体使用手机字体宋体Q图7Q?/font>


    ?

      最后给每个功能dl对路径地址Q让用户点击主题上的q些功能按钮卛_q入手机上相应功能的界面Q如电话在手机的E盘上Q则在Flash中给按钮d一个鼠标释攑֐跌{?ldquo;Z:/System/Apps/Phonebook/Phonebook.app”的ActionScript脚本Q图8Q?/font>


    ?

      现在一个简单的诺基?650手机的Flash主题模式完成了Q下面选择“文g”菜单下的“导出”功能导出SWF文gQ在导出对话框中注意导出的版本是“Flash Lite1.0”Q用移动设备模板设计的动画默认导出该版本)Q图9Q?/font>


    ?

      我们在电脑上观看q个主题动画是看不到~辑时诺Z7650的手机外壳的Q只是一个尺ؓ176*208像素的动画,注意最后生成的SWF不能大于20kbQ本例的动画体积?4k比较合适?/font>

     Flash主题动画演示: http://soft.yesky.com//imagesnew/software/0503/16/yl050316-f1-7650.swf

      本文只是单的介绍了用Flash MX Pro 2004开发手机Flash动画的制作过E和设计原理Q要开发一个完整的手机Flash主题需要掌握很多Flash设计与Flash LiteE序的应用技术,现在要获得手机版本的Flash Lite Player播放器需要每个用户发邮g?/font>mobiledeveloper@macromedia.com甌Q申h需要输入自q手机型号和手Z码才能获得可以播攑֊ȝ正式版本。小珍借花献佛l大家一个发烧友开发的全功能的手机Flash主题动画Q?/font>下蝲Q,供有兴趣的闪客们研究新的Flash技术?br />  三、在手机上应用制作好的Flash动画主题

      得到Flash Lite Player正式版可以畅通无ȝ在手Z播放Flash动画Q不q很遗憾现在Macromedia已经停止甌。但我们可以从网上的手机论坛上找到Flash Lite Player试用版,虽然功能q不完整Q但也能体验手机播放Flash的效果?br />
      先在手机上安装Flash Lite 1.1 Q这样在手机的程序菜单界面就能看到熟悉的Flash图标Q图10Q?


    ?0

      把自己制作好的Flash文gd到手机的存储卡上Q然后可以用手机的资源管理器软g扑ֈFlash动画文gQ图11Q?/font>


    ?1

      选择打开q个Flash文gQ即可看到我们的动画在手Z演示了(?2).



    ]]>
    MX 2004 数据l定[高] http://m.tkk7.com/sl2cj/articles/45200.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 09 May 2006 05:53:00 GMThttp://m.tkk7.com/sl2cj/articles/45200.htmlhttp://m.tkk7.com/sl2cj/comments/45200.htmlhttp://m.tkk7.com/sl2cj/articles/45200.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/45200.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/45200.html MX 2004 数据l定[高] 本文作?Mizarli
    文章出处:ultrashock
    文章性质:译
    阅读ơ数:5854
    发布旉:2005-01-18 声明Q?/strong>本译文只供个人学习参考之用;本文所有权属于ultrashock所有,英文原版链接为:http://www.ultrashock.com/tutorials/flashmx2004/databinding.php
    ׃水^有限Q其中难免有误,请多多包涵!如要转蝲请通知本站,谢谢合作!

    讨论及源文gq里:http://www.webstudio.com.cn/forum/showthread.php?p=86#post86

    创世之初...
    创世之初上帝创造了天空和大地。当时大地是无定形的、方块的Q所以上帝创造了Flashq发现它用v来还不错。那是第一天的事了。到了第四天Q上帝已l不满于普通的动画了,所以他引入了ActionScript。到了第五天Q上帝摒弃了旧式的ActionScriptq新开始构建,但仅仅是使AS更规范了些。到了第六天QAS得到了补充ƈ且上帝创造了lg。后来,上帝发现lg很孤独就创造了数据,通过它,lg可以被绑定在一P分n数据l合的乐。第七天Q上帝打休息了Q但在发明了Flash甚至更好的是在创作环境中整合了数据绑定功能和整齐的组件构架?

    那么Q什么是数据l定呢?
    也许你已l认识到Q数据绑定对于Flash来说已经不是新特性了Q但是自从加Z对FlashMX的改善后Q已l有了极大的提高。简单地_数据l定是一U简单的Ҏ——不费太多功夫Q就可以把你的数据捆l在一赗你可以协调不同用UIQuser interfaceQ组件的属性,甚至可以通过数据lg把它们与服务器端的数据相q。数据绑定不需要懂得复杂的AS或者懂得操作XMLQ而是把这Ҏ作减到用简单的“点击”操作p完成。数据绑定是快速应用程序开发(RADQ的一个关键的Ҏ也是原型开发的利器?

    点对点(point-and-clickQ数据绑定本质上是通过q行时数据绑定应用程序接口(APIQ实现的。假如在你的q里包含了需要的资源Q你也可以通过脚本来访问它。这仅仅需要复制公用库里的数据l定cȝPData Binding ClassesQ,可以在Flash菜单中找到它Q?
    H口——其他面板——公用?mdash;—cR这是最好的ҎQ如果你仅需要徏立到动态内容的l定或者仅仅喜Ƣ在代码环境下工作。然而,我们现在x的是可视化的界面?

    在开始之前,在这里请先下载源文gq解压羃C个新目录中?

    L你的方向

    开始吧Q让我们来看看用来实现数据绑定的新面ѝ开始时会有点心慌,但我们将很快适应它。我已经把它们布|好了,以组仉板开始,l束于组件检查器中的“架构标签”。别多想Ql学习!

          
                              lg面板                     lg查器Q参数标{?
        
                            lg视面板:l定标签          lg视面板:架构标签

    基本的组?/strong>

    既然lg面板让我们有Ҏ乱,那就从这开始学习吧。我们要建立一个非常简单的在两个单选按钮(CheckBoxQ之间的l定Q像q样Q?strong>演示

    单点每个单选按钮时Q你会发现另外一个也发生了同L变化。这是我们要达到的目的?
    1?nbsp;   从组仉板拖拽出两个单选按钮,分别l这两个实例命名为checkBox1和checkBox2 Q?
    2?nbsp;   打开lg面板?ldquo;l定”标签Q然后选择checkBox1Q这时的面板应该是空的,因ؓq没有徏立Q何绑定;
    3?nbsp;   点击按钮Q会弹出“dl定”面板Q?
    4?nbsp;   我们要绑定的是已选的checkBox的selected属性,所以点d?ldquo;selectedQBoolean”卛_Q然后点?ldquo;OK”;


    5?nbsp;   在绑定标{下昄了一个新建的l定。现在我们把它和其他对象q接h。双d数列表中?ldquo;bound to”参数的空白区(会有“l定?rdquo;H口弹出)Q通过选择“lg路径”checkBox2?ldquo;架构位置” selected属性,完成l定Q如下所C:


    6?nbsp;   好了Q测试你的媄片吧Q?

    管看v来不错,但是q不是很严密的。有一个面板我们还没看到。最使h烦ؕ?ldquo;架构”标签。组件的架构标签是对lg数据l构的一个概括。在一个单选按钮的情况下,是最单的Q默认ؓ一个属?mdash;—军_它是被选中q是未被选中。你可以看到“selected”字样昄在刚建立的单选按钮的列表里。源文g名ؓCheckBoxes.fla

    架构
    使用架构面板Q我们不会受限制于默认条件。我们可以在q加入新的属性,q且q些属性是可控的有用的。通常q不用做太多Q因为属性ƈ不意味Q何东西,但事实上你可以徏立更多的lg属性来提供数据l定?

    W二个例子,我们要绑定两个单选按钮,不过q次l定一个组件的“可用”属性,用它来激zd一个组件。:演示

    注意选择或者取消选择单选按?可以ȀzL不激zd选按?。这更有用处。你可以用这L功能Q在表单中根据用L选择来激zL者不Ȁz表单中的其他部分。让我们开始吧?

    1?nbsp;   开始前L?中已l定的选项Q选择M一个单选按钮,然后选择l定标签Q单?a target="_blank"> 按钮Q?
    2?nbsp;   选择lg实例“checkBox2”Q点L构标{,点击 增加一个新属性;
    3?nbsp;   在架构面板下会有很多信息昄出来Q但是别担心Q本例中不需要太多的讄。仅仅设|?ldquo;field name”参数?ldquo;enabled”Q?ldquo;data type”参数?ldquo;Boolean”?

    4?nbsp;   现在象前面所做的一P建立帮定。不q这回是l定单选按??ldquo;selected”属性到单选按??ldquo;enabled”属性上Q测试一下!

    是不是目前所有的数据都是ZXML呢?

    是的Q所以要熟悉它,否则有被淘汰的可能Q除XML以外其他的方法都会在数据l定上遇到困难!接下来,我们引入XML架构Q然后从外部的XML文gUL数据做菜单条Q用XMLConnectorlg?

    首先你应该知道菜单条lgQ实际上有许多XML驱动的组Ӟ比如菜单、菜单条、目录树Q,只是XML节点的名字被忽略了,仅仅使用了XML的属性。下面就是一个XML文g例子Q?
    代码:
     
    <menu>
        <menu-title label="file">
            <menu-item label="load" />
            <menu-item label="save" />
            <menu-item label="print" />
        </menu-title>
        <menu-title label="edit">
            <menu-item label="cut" />
            <menu-item label="copy" />
            <menu-item label="paste" />
            <menu-item label="sub-menu">
                <menu-item label="nothing here" />
            </menu-item>
        </menu-title>
    </menu>
     

    xmlMenu.swf文g演示
    演示

    架构面板给我们带来的更多的便利。我们将用XMLConnectorlg载入数据Q而用架构面板指引菜单引用相应部分的XML文g?

    1?nbsp;   首先Q我们需要在舞台上放|一个菜单条lgMenu和一个XMLConnectorlgQ分别ؓlg实例命名menuBar和xmlConnector。你可以把XMLConnectorlg攑֜舞台的Q意位|,因ؓ发布Ӟ它是不可见的Q?
    2?nbsp;   接下来,需要设|XMLConnectorlg来加载数据。要辑ֈq个目的Q请在组件参数面板中使用如下的设|:

    menu.xml是XML文g名,h意在direction参数讄为receiveQ因是一个静态的XML文档Q?
    3?nbsp;   接下来增加些化设|。我们用架构面板来告诉XMLConnectorQ什么样的XML文g是可以接受的。确定XMLConnectorlg处在被选择状态,打开lg属性检查器的架构标{;
    4?nbsp;   选择架构标签下的“results”属性,因ؓ数据加载到q里。点击[IMAGES]http://www.ultrashock.com/tutorials/flashmx2004/images-databinding/import_schema_button.gif[IMAGES] 按钮导入一个XML架构Q导航栏中选择“menu.xml”文gQ选择打开选项。你的架构面板看h会是如下的样子Q?

    所有这些信息是Z说明你的XML文档的结构。Flash会发现重复的元素q将它们视ؓ数组QFlash也侦查象q样的?ldquo;true”或?ldquo;1”q把它们做ؓBoolean?Numbercd的倹{现在我们只Ҏ节点和菜单感兴趣Q?
    5?nbsp;   选择 menuBarlgq打开属性检查器的绑定标{。menuBarlg默认有一个可l定属性、数据源属性;
    6?nbsp;   增加一个到数据源的l定Q象我们在例2中做的那P

                                              选择菜单节点Q数据绑定完?

    7?nbsp;   q有件事我们q没有做Q加载XML文档Q只需要在L间线放一段代码Q?
    xmlConnector.trigger();
    8?nbsp;   试q吧!

    数组和烦?/strong>
    现在Q大部分的数据绑定是使用数组完成的,q是通过Z列表的组Ӟ比如Listlg、DataGridlg或ComboBoxlgQ完成的。Flash可以探测到XML架构中重复的节点Qƈ且把它们作ؓ一个数l来处理。作为示范,我们徏立一个小的简单的应用E序Q它
    用来昄家务zȝ值班表?
    selectIndex.swf文g演示在这?
    演示

    以下是驱动这一E序的XML 代码Q?
    代码:
     
    <chores title="House Work Rota">
    <day label="monday">
      <job description="dishes" person="john" time="15 mins" />
      <job description="cooking" person="sam" time="1 hour" />
      <job description="walking dog" person="david" time="30 mins" />
      <job description="laying the table" person="peter" time="5 mins" />
      <job description="slacking off" person="elisabeth" time="all day" />
      </day>
    <day label="tuesday">
      <job description="dishes" person="david" time="25 mins" />
      <job description="cooking" person="peter" time="1 hour" />
      <job description="walking dog" person="sam" time="20 mins" />
      <job description="laying the table" person="john" time="15 mins" />
      <job description="slacking off" person="elisabeth" time="all day" />
      </day>
    <day label="wednesday">
      <job description="dishes" person="sam" time="20 mins" />
      <job description="cooking" person="david" time="1 hour" />
      <job description="walking dog" person="peter" time="30 mins" />
      <job description="laying the table" person="john" time="15 mins" />
      <job description="slacking off" person="elisabeth" time="all day" />
      </day>
    <day label="thursday">
      <job description="dishes" person="peter" time="3 hours" />
      <job description="cooking" person="john" time="1 hour" />
      <job description="walking dog" person="david" time="30 mins" />
      <job description="laying the table" person="sam" time="10 mins" />
      <job description="slacking off" person="elisabeth" time="all day" />
      </day>
    <day label="friday">
      <job description="dishes" person="sam" time="20 mins" />
      <job description="cooking" person="sam" time="1 hour" />
      <job description="walking dog" person="peter" time="20 mins" />
      <job description="laying the table" person="sam" time="5 mins" />
      <job description="slacking off" person="elisabeth" time="all day" />
      </day>
    <day label="saturday">
      <job description="dishes" person="john" time="1 hour" />
      <job description="cooking" person="john" time="1 hour" />
      <job description="walking dog" person="david" time="30 mins" />
      <job description="clean car" person="sam" time="30 mins" />
      <job description="laying the table" person="david" time="10 mins" />
      <job description="slacking off" person="elisabeth" time="all day" />
      </day>
    <day label="sunday">
      <job description="dishes" person="peter" time="20 mins" />
      <job description="cooking" person="david" time="1 hour" />
      <job description="walking dog" person="peter" time="20 mins" />
      <job description="laying the table" person="john" time="5 mins" />
      <job description="slacking off" person="elisabeth" time="all day" />
      </day>
      </chores>
     

    那么我们从哪里入手呢Q?
    首先导入我们的XML架构Q在舞台上放|一个XMLConnectorlg实例Qƈ命名Q因为没有命名的lg实例是不允许q行l定的)Q导入文?ldquo;chores2.xml”——认把它导入到results参数里而不是其他参敎ͼ接下来我们要l定驱动应用E序的数据到comboBoxlg上。注意XML的属?mdash;—存储一周中的每一天作为标{。这会是很便利的Q因正是comboBoxlg需要的Q但通常q不是最好的习惯。我们将在名字ؓ“格式?rdquo;的部分看到更适合的用法?

    l定comboBox的数据驱动程序到XML文档源:
    1、新建comboBoxlg实例Qƈ命名Q?
    2、选择列表框组Ӟ打开lg查器的绑定标{;
    3、在数据驱动E序属性中新徏一个绑定;
    4、点?ldquo;Bound To”域,指向XMLConnectorlgQ从构架中选择天数的数lday:Array

    接下来,我们需要配|数据栅格DataGridlg和XML数据源。这有点复杂因ؓ整个数据源需要改?mdash;—无论列表框中日期选择了哪一天。如果比较XML文档和Flash解释的XML架构Q你会发现它的结构象一个嵌套的数组。在“天数数组”day的每一天包括一?ldquo;工作数组”job。既然每个东西在架构中只提及一ơ,我们下一步就使用架构来绑定day数组中的N个烦引的job数组。现在你独立可以完成q一步了Q在XMLConnector架构中,用DataGridlg实例的dataProvider属性绑定job数组节点?
    到目前ؓ止,我们q不能说job数组已经l定到实际的XML文档里,事实上,?个选择——而我们只l定了第N天的数组Q但是Flash在确定N的取值时Q有个秘密?
    1?nbsp;   再次选择XMLConnectorq打开l定标签Q?
    2?nbsp;   选择从job数组到dataGridlg实例的绑?mdash;—results.chores.day.[n].job。你也许注意C个新的参数Index for ‘day’已经出现在底端。这个参数让我们指定day数组的烦引倹{在q里你可以输入一个|但是我们惌它随comboBoxlg实例的选项而变化。本质上Q在其他的可l定的属性上都可以这么用Q所以我们仅仅把它和comboBoxlg实例的selectedIndex属性绑定在一Pp我们所做过的其他绑定一?mdash;—双击Index for ‘day’参数的空白值区Q弹出绑定烦引窗口,取消使用常数值选项Q选择“lg路径”ComboBox?ldquo;架构位置”selectedIndex:Number选项?

    3?nbsp;   试q好了吧?
    格式?/strong>
    好了Q我们已l知道怎样从一个组件中得到一个值ƈ且把q个值放在另外一个组件中。但是这通常是不够的。有时我们需要在lg中的数据以不同方式展玎ͼ有时需要两个组件展CZ同的数据?
    我们用格式化来实现这个目标。有几个内徏的格式化工具你可以选择Q同时你也可以自定义的格式,用AS2cR你可以选择在选择l定旉择格式化工具ƈ且从列表中选择它们。选择自定义的格式需要用C自己的类?


    我们以内建的格式开始,比如

    BooleanQ布|

    也许是最单的内徏格式化方式。它仅仅是一个布|或真或假Qƈ且输Z个字W串。你可以通过真或假来选择要描q的?mdash;—在格式化选项中?
    Bool_formatter.swf演示

    Compose StringQ排列字W串Q?/strong>
    转换一个对象的域,形成单个字符丌Ӏ你可以l合M数量的域Q也可以插入其他的字W。徏立一个字W串模板Q选择格式化选项q入字W串。你也可以放|Q何文本在q里Q但是Q何在”<>”表示W中的内容将被做Z个域来处理。如果对象有子对象(比如XMLQ那么,你可以用它?mdash;—通过点语法来获得它们的\径。字W串模板的例子如下:
    Compose_formatter.swf演示

    DateQ日期)
    把日期{换成字符Ԍ单的模板?ldquo;MM/DD/YYYY”。允许的格式“M”(月䆾)Q?ldquo;D”Q日期)Q?ldquo;Y”Q年份)Q?ldquo;H”Q小ӞQ?ldquo;N”Q分钟)?ldquo;S”Q秒Q。你可以用格式化工具反向格式化字W串为日期,但是׃某种原因Q这U做法仅仅用在双向绑定中?
    Date_formatter.swf演示

    Number (数字)
    非常单的格式化选项。可以显C十q制的数字?
    Number_formatter.swf演示

    Rearrange Fields (重新排列的域)
    让你可以协调域,比如一个组件的数据源中的域名和另一个组件数据源的域名不同的情况下。域是以列表的Ş式成对出现在格式化选项中。比如一个简单的字符Ԍ”label=name;data=colour;otherField=yetAnotherField”。这对于昄数据很有用,比如以下拉列表框和列表框昄数据Q相应改变组件标{֟属性,可以用重新排列的域格式化你想昄的作为标{域。在q个例子中,一些XML文g已经加蝲了,用来ULC拉列表框和它的域Q重新排列的Q,所以名U属性被用作标签?
    Rearrange_formatter.swf演示

    Custom FormatterQ自定义格式化)
    要自定义格式Q需要定义一个很单的c,它有两个ҎQ格式化和非格式化,为每U类型提供一个依据,q且可以q回M东西。在q个例子中,cL式化数字镑符P
    代码:
     
    // class used to convert numbers to sterling currency and back again
    class SterlingFormatter {

        // turns a number into a string
        function format (data:Number) : String{
            var currency:String;
            var pounds:Number = Math.floor(data);
            var pence:Number = Math.round((data - pounds)*100);
            var poundsStr:String = String(pounds);
            var penceStr:String;
            if(pence<10){
                penceStr = "0" + String(pence);
            }else{
                penceStr = String(pence);
            }
            currency = "&pound;" + pounds + "." + penceStr;
            return currency;
         }

        // removes sterling format and returns a number
        function unformat (data:String) : Number {
            var str:String = data.substr(1);
            var num:Number = parseFloat(str);
            return num;
         }
    }
     

    键入一个数值在左边Q看看有边会有什么格式?
    Custom_formatter.swf演示

    局限、防范、实?/strong>
    创作时的数据l定是基于mc路径的,q将带来一些局限和危险。主要的问题是当你徏立一个在两个lg之间的绑定时Q这两个lg的实例必被唯一的标识,而且q也依赖它们的\径。因此,如果你改变了一个组件的路径Q之后再提供l定Q将会丢p个绑定。尽我已经注意C可以安全的改变组件实例的名字不必改变它们的绑定?
    通常Q在q行Ӟlg可以从绝对\径上解决l定问题。但是如果你提供C个舞C不存在的mc的绑定,l定从可以被识别的mc中选择“最q的”。问题是同样的mc被不同的解释,如果该mc是在舞台上编辑过的或者在库中~辑的。要避免混ؕ、冲H、遗失已完成的内容,你需要遵循如下的指导斚wQ?
    1?nbsp;   不要对这Lmc使用l定Q即在创作过E中加到舞台上,又用了动态附加的Q?
    2?nbsp;   不要对舞C选择?ldquo;~辑”q的W号提供数据l定。?ldquo;本地~辑”保护mc的内部结构关p;
    3?nbsp;   在加入绑定之前,谨慎的规划你的应用程序,如果E序很复杂的话。当你觉悟到因ؓ所有的lg嵌套在一个mc里而所有的l定失去了作用,是一件无法启齿的错误?
    4?nbsp;   如果要将应用E序动态的加蝲到其他的q里,使用 _level替代q的target?

    ȝ说来Q以上的讲解只是引导你用H体建立最单的应用E序的开始,你还要添加很多的场景和组件。场景都这转v来后再加入数据绑定。最后一点要说明Q有点讨厌但它也实是个锐的问题,在很多情况都会发生)?

    如果你已l看q源文gQ你׃发现我在引导层加入了一些箭头符受这对于单的l定来说无关紧要Q但是一些复杂的pȝl定是很难跟t的Q所以我提倡这样做Q用最原始?ldquo;文档”来说明你在做着什么。用语言来描qC所做的l定是比较困隄Q但是图C可以很只管的表辄定的意思。如果一些东襉K要比较详l的说明Q那么在一个引导层用文本来注释是很有帮助的。这些箭头不是正是的W号Q重要的是可以保留一些对要发生的事情的暗示?

    l束
    数据l定在MX2004中是个重要的主题Qƈ且有很多斚w我还没有늛刎ͼ包括q行时的API和n份认证。这本n是个主题,但是很值得掌握——它涵盖了很多的功能,你可以节省很多的旉和精力,不用重新构徏它?

    然而你也许不会选择数据l定面板来开发企业应用E序Q你也许直接会用q行时的API。但是数据绑定面板可以快速的提供一个原型或型应用E序Q因为它们提供了非常单的Ҏ来构建复杂的数据交互。n份认证和格式化都可以通过AS2实现可扩展功能,是没有限制的?

    讨论及源文gq里:http://www.webstudio.com.cn/forum/showthread.php?p=86#post86

    ]]>
    վ֩ģ壺 ͽXXXX| 鶹˳Ƶ| ޹ƷպרAV| avһ| ޾Ʒһ | Ʒަv| ˾þþƷС˵| Ļó| ŮվɫƵ| պѵӰ߹ۿ| ½޾Ʒ| ޳꿴Ƭ߹ۿ| **ɫëƬѹۿ| ˳˳ۺþþ| aѹۿ| ˾žŴɫ㽶վ| ޳վ| þþù޾Ʒ| žžƵ| һaƵ| ޹ŮƷþþþá| ҹѸƬۿ| Ļһȥ̨| ֻˬִַ̼| jizz߹ۿ| þþƷAV뽿ɫ| ŷߴSUV| ѴƬ߹ۿ| ޳AƬ߹ۿ| ձh߾Ʒѹۿ| պŷ޹ƷĻþþ| ޾Ʒa߹ۿ| պƷһ| 91ۺ| þþƷƷ| þֻƷ99re| ۺɫ߹ۿ| ŷղþ99| Ӱɫۺ| һ˿wwwƵ| ۺϼƵ|