|
查看: 6844|回复: 22
|
问一下菜鸟的actionScript。。
[复制链接]
|
|
|
发表于 30-7-2009 12:32 PM
|
显示全部楼层
原帖由 wildkyo 于 30-7-2009 10:22 AM 发表 
我有10个mc(select1_mc, select2_mc,....select10_mc), 我把他们当作是可以操作的btn, 然后我就用for loop来跑他们。
因为我的mc里面有动画效果,所以我用onEnterFrame...
在这个情况下, eval可以多次使用吗?
现在 ...
eval 當然可以使用, 但直接改用 _root["select"+i+"_mc"] 會比較好, 而且某些方面可以不用重複定義對象, 如:
_root["select"+i+"_mc"].onRollOver = function() {
this.onEnterFrame = function() { //使用 this 來指定對象會方便些
this.nextFrame();
};
};
還有最好是在 onEnterFrame 執行到最後一個 frame 或第一個 frame 之後做 delete this.onEnterFrame
這樣可以減少 CPU 的資源, 使用者的電腦瀏覽起來會順暢些 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 30-7-2009 01:03 PM
|
显示全部楼层
谢谢~ 超级番茄~~
问题解决了!
还有另一个问题, 我的flash里面有很多bitmap的mc motion, 弄到整个画面很卡, 我已经把fps提高了, 为什么情况还是一样的? 是不是要用script来加快他的fps呢?
楼上的 http://www.infinityloop.net/ 里面有不少的精致图画, 但是做么你的特别顺畅的?
[ 本帖最后由 wildkyo 于 30-7-2009 03:33 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 30-7-2009 05:47 PM
|
显示全部楼层
原帖由 wildkyo 于 30-7-2009 01:03 PM 发表 
谢谢~ 超级番茄~~
问题解决了!
还有另一个问题, 我的flash里面有很多bitmap的mc motion, 弄到整个画面很卡, 我已经把fps提高了, 为什么情况还是一样的? 是不是要用script来加快他的fps呢?
楼上的 http://www ...
提高 fps 也沒甚麼多大變化的話, 哪麼看來你的圖片真的是很多而且圖片的質量都很高
script 並不能優化這類問題, 只有自己控制 Flash 輸出的大小, 裡面圖片的質量不要太高等
不然 cpu 還沒處理好應輸出的畫面就跳至另一個 frame, 就會出現 lagging 的情況
我的網址中並沒很多 Flash, 當中也沒有很多圖片, 主要還是 HTML 為主 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 31-7-2009 09:38 AM
|
显示全部楼层
嗯嗯,你在这里一直帮人家解决种种困难的问题,你flash的战场一定是经历过许多风风雨雨的,我想知道一下你的大大小小的FLASH学问怎样得到的啊?
目前我的FLASH是自修的,也可以说是闭门造车。。之前有在学院学过一点皮毛而已,老师也只是酱带过。。
我还有一个小问题,是这样的....
aaa.onRollOver = function() {
this.onEnterFrame = function() {
this.nextFrame();
};
};
这里有10个frame,我在第9个frame放stop(),可是onRollOver的时候,aaa就是play着不会停下来,是不是因为onEnterFrame的关系啊,所以不管怎样他就一直nextFrame下去是吗?有什么办法可以把它停下来/弄不见?
我try过delete this.onEnterFrame 然后stop(),我把它当作是onEnterFrame不见了才能stop() 噜... |
|
|
|
|
|
|
|
|
|
|
发表于 31-7-2009 07:08 PM
|
显示全部楼层
因为onEnterFrame的关系,就算在外面命令他stop();,电脑也会因为onEnterFrame的关系继续执行。(stop();的效果就好象一瞬间,等于没有)
MovieClip第9个frame放stop();
在_root放上:
aaa.onRollOver = function() {
this.play();
};
这样应该可以解决。 |
|
|
|
|
|
|
|
|
|
|
发表于 1-8-2009 07:22 PM
|
显示全部楼层
原帖由 wildkyo 于 31-7-2009 09:38 AM 发表 
嗯嗯,你在这里一直帮人家解决种种困难的问题,你flash的战场一定是经历过许多风风雨雨的,我想知道一下你的大大小小的FLASH学问怎样得到的啊?
目前我的FLASH是自修的,也可以说是闭门造车。。之前有在学院学过一 ...
我的 Flash 也是自修的,技术也就是经验的累积,所以多用之後你也可以一樣
至于你的問題楼上的朋友已經大略解释了,nextFrame 也就是指定播放到下一個 frame 之後停止,所以你的 stop 就算放了也没什么作用,onEnterFrame 會一直不断的执行着跳至下一個 frame
你可以使用楼上朋友的方式做往后播放, 但如果想要方便的話可以试试看這樣写個 MC 继承函数
MovieClip.prototype.playSpeed = function(speed:Number)
{
if(speed == undefined || !speed) speed = 1;
delete this.onEnterFrame; //這行必须存在,不然每呼叫這個函数一次就會增加一次 onEnterFrame 而慢慢导致系统资源完全被消耗完
this.onEnterFrame = function()
{
var frame:Number = this._currentframe + speed;
this.gotoAndStop(frame); //指定每個 fps 跳至指定的 frame
if(frame <= 1 || frame >= this._totalframe)
delete this.onEnterFrame;
//只要回到第一個 frame 或最后一個 frame 就結束 onEnterFrame 并释放资源
}
}
aaa.onRollOver = function()
{
this.playSpeed(1); //大于等于 0 或不填写参數的話代表往後播放,数字代表播放速度
}
aaa.onRollOut = function()
{
this.playSpeed(-1); //道理同上,只是负数代表往前播放
} |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 3-8-2009 02:29 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 3-8-2009 06:44 PM
|
显示全部楼层
之前我自学的时候有看到一个不错的Coding,对你来说应该比较简单,和Tomato大大的Code相似。
在MovieClip的TimeLine里面的第一个Frame放上下面的Code。
onEnterFrame=function(){
if(rewind==true){
prevFrame();
}
}
this.onRollOver=function(){
rewind=false
play();
}
this.onRollOut=function(){
rewind=true
}
stop();
至于图片方面,尽量选择Actual Size。就好像你需要放一张500x500的图,就直接Cut成500x500,勿将它从很大的Resolution在Flash里面缩小,这样帮不了什么。
Type方面,以情况选择图片格式。若是图片颜色不多,那就用GIF格式。如果要背景透明,PNG会比较好。对于做Flash的人来说,BMP和TIFF应该极少用到。Standard的话就用JPEG(无法储存透明背景,自动转成白底)。使用矢量图Vector是最好的
里面Animation方面,Filter的效果尽量不要在同一个Frame下让许多MovieClip有Filter Motion。不然你就会看到卡机。这是Coding没有办法解决的。
对于重复出现的图片,我个人比较喜欢以loadMovie的形式从别的Folder Load进Flash里面。这样可以节省Library的资源消耗,也可以减少Flash的大小。
上面是我个人经验。多多指教。(小弟也是自学。。。 )
[ 本帖最后由 VernGalaxy 于 3-8-2009 06:56 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 4-8-2009 09:48 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 4-8-2009 02:54 PM
|
显示全部楼层
原帖由 wildkyo 于 3-8-2009 02:29 PM 发表 
由于我的mc动画有前进和倒退的效果,据我目前的flash能力, 所以我必须要用 onEnterFrame配nextFrame(前进) 和 onEnterFrame配prevFrame(倒退) 
既然有play(), 不知道play backward 的 function 有 ...
抱歉, 剛剛看到我的 coding 有個錯誤
this._totalframe 少寫了 s 應該是 this._totalframes
你所提供的那個遊戲除了背景以外, 其他遊戲中的圖片都是很小的, 你去 Map Editor 中就可以看到那些 object 圖片. 建議你有些東西能夠畫的就以 vector 處理, 這樣一來計算方面會快很多 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 4-8-2009 04:22 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 4-8-2009 06:17 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 5-8-2009 12:06 AM
|
显示全部楼层
原帖由 wildkyo 于 4-8-2009 04:22 PM 发表 
tomato兄,map editor是flash的menu tools?还是software名来的?
我用的是MX 2004而已,旧的没有吗?
有人会做倒影吗? 在flash里面的...
我的方法是用original图画, 在把它copy n paste就flip vert ...
是說遊戲中的 Editor
你怎麼不會把 object 和背景圖片分開, 這樣背景圖片就可以一直重複使用
倒影可以複製 object 之後反方向放置之後在下方的 Properties 之中把 Color 設定為 Advanced, 然後在 Settings 中設定 rgb 顏色和你所要的 Alpha 值即可 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 5-8-2009 10:33 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 5-8-2009 02:56 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 5-8-2009 08:57 PM
|
显示全部楼层
原帖由 wildkyo 于 5-8-2009 10:33 AM 发表 
通常是要用ps画画来做flash所不能画到的图画是吗?弄出来的image不是会很大咩?如果file size弄小的话, image就会变烂变pixelize了噢... 再说,把bitmap放在flash做motion会很吃space,而且test movie的时候会弄 ...
如果你要 gradient 的效果也不難啊, 請下載以下的演示
http://super-tomato.net/download/GradientMask.exe |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-8-2009 10:58 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 6-8-2009 11:27 PM
|
显示全部楼层
原帖由 wildkyo 于 6-8-2009 10:58 AM 发表 
之前我有把它改成mask还是不能, 是不是我们用old version flash的关系噢?
tomato兄的技术果然一流啊 , 小弟实在佩服五体投地!!
我之前已有try过用mask layer来做, 可是效果只是好像用soli ...
using runtime bitmap caching 是在 Flash 8 才開始有的圖片處理功能, 目前已經是 CS 4 版本了, 我覺得你應該升級一下 Flash 版本了 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 7-8-2009 04:08 PM
|
显示全部楼层
|
tomato兄, 我有一个文件收很多图画的,我从database拿它的path出来,然后用script call path 里面的图画(jpeg. bitmap),是否应该用loadMovie()呢? |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|