佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

搜索
查看: 6844|回复: 22

问一下菜鸟的actionScript。。

[复制链接]
发表于 30-7-2009 10:22 AM | 显示全部楼层 |阅读模式
我有10个mc(select1_mc, select2_mc,....select10_mc), 我把他们当作是可以操作的btn, 然后我就用for loop来跑他们。
因为我的mc里面有动画效果,所以我用onEnterFrame...
在这个情况下, eval可以多次使用吗?
现在这个script 不知道有什么问题,
结果他们都没有反应,但是有handcursor的鼠标出现

各位大大有没有办法帮我看看..?
谢谢

for (var i = 1; i<11; i++) {
        eval("select"+i+"_mc".onRollOver = function() {
                eval("select"+i+"_mc".onEnterFrame = function() {
                        eval("select"+i+"_mc".nextFrame();
                        eval("select"+i+"_mc".nextFrame();
                };
        };
        eval("select"+i+"_mc".onRollOut = function() {
                eval("select"+i+"_mc".onEnterFrame = function() {
                        eval("select"+i+"_mc".prevFrame();
                };
        };
}
回复

使用道具 举报


ADVERTISEMENT

发表于 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();
};

这样应该可以解决。
回复

使用道具 举报

Follow Us
发表于 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 | 显示全部楼层
原帖由 VernGalaxy 于 31-7-2009 07:08 PM 发表
因为onEnterFrame的关系,就算在外面命令他stop();,电脑也会因为onEnterFrame的关系继续执行。(stop();的效果就好象一瞬间,等于没有)
MovieClip第9个frame放stop();

在_root放上:
aaa.onRollOver = function() {
        this.play();
};


由于我的mc动画有前进和倒退的效果,据我目前的flash能力, 所以我必须要用 onEnterFrame配nextFrame(前进) 和 onEnterFrame配prevFrame(倒退)

既然有play(), 不知道play backward 的 function 有没有啊??


原帖由 super-tomato 于 1-8-2009 07:22 PM 发表


我的 Flash 也是自修的,技术也就是经验的累积,所以多用之後你也可以一樣

至于你的問題楼上的朋友已經大略解释了,nextFrame 也就是指定播放到下一個 frame 之後停止,所以你的 stop 就算放了也没什么作用, ...


我看了不是很明白啊 可能我coding太笨了 + 新手

MovieClip.prototype.playSpeed  <<< 真正的用途我不明白啊,尤其是playSpeed...

this.onEnterFrame = function()
    {
       var frame:Number = this._currentframe + speed;  // 这两行我不是很明白
        this.gotoAndStop(frame);                                         // 所谓"指定每個fps " 是什么啊?
        if(frame <= 1 || frame >= this._totalframe)
        delete this.onEnterFrame;  
    }
}

不好意识, 可以再仔细解释吗?   


----------------------------------------

对了, 为什么会有些网上的flash game含有很多图画, 但是它也不会卡的?
他们通常用什么sw来画图画的啊??

我是"问题"少年来的 请各位谅解~!
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
原帖由 VernGalaxy 于 3-8-2009 06:44 PM 发表
之前我自学的时候有看到一个不错的Coding,对你来说应该比较简单,和Tomato大大的Code相似。

在MovieClip的TimeLine里面的第一个Frame放上下面的Code。

onEnterFrame=function(){
   if(rewind==true){
     ...


现在我明白了,谢谢这位仁兄的
如果我有一张图画, 我应该用trace bitmap比较好呢?trace了之后file size好像会比较大了

之前我有玩过一些flash game, 他们的interface(背景,object)画得很厉害咧我很喜欢.. 他们是用ps还是flash来画的呢?
打个比方这个site好了    ——〉〉〉
http://armorgames.com/play/3614/crush-the-castle
他们用什么来画的?
回复

使用道具 举报

发表于 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 | 显示全部楼层
原帖由 super-tomato 于 4-8-2009 02:54 PM 发表


抱歉, 剛剛看到我的 coding 有個錯誤
this._totalframe 少寫了 s 應該是 this._totalframes


你所提供的那個遊戲除了背景以外, 其他遊戲中的圖片都是很小的, 你去 Map Editor 中就可以看到那些 object 圖片 ...


tomato兄,map editor是flash的menu tools?还是software名来的?
我用的是MX 2004而已,旧的没有吗?

有人会做倒影吗? 在flash里面的...
我的方法是用original图画, 在把它copy n paste就flip vertical 移在original pic下面, 然后我就画四方形(颜色和背景色一样)压在这倒影上面
*四方形颜色是linear, 上面alpha 0%, 下面 alpha 100%
这个是我想出来的方法, 虽然可以用在背景是纯色的, 可是如果背景有一些图画的就不能用了

各位有什么更好的方法吗?
回复

使用道具 举报

发表于 4-8-2009 06:17 PM | 显示全部楼层
原帖由 wildkyo 于 4-8-2009 04:22 PM 发表


tomato兄,map editor是flash的menu tools?还是software名来的?
我用的是MX 2004而已,旧的没有吗?

有人会做倒影吗? 在flash里面的...
我的方法是用original图画, 在把它copy n paste就flip vert ...

这种图片效果的话,和Photoshop配合比较好。毕竟Flash的功能技不在修图
Photoshop里面你可以复制同样的图,做Vertical Flip,然后可以做Layer Mask拉Gradient调Opacity。不然用有Feather的笔刷来擦掉不要的部分也可以。
回复

使用道具 举报

发表于 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 | 显示全部楼层
原帖由 VernGalaxy 于 4-8-2009 06:17 PM 发表

这种图片效果的话,和Photoshop配合比较好。毕竟Flash的功能技不在修图
Photoshop里面你可以复制同样的图,做Vertical Flip,然后可以做Layer Mask拉Gradient调Opacity。不然用有Feather的笔刷来擦掉 ...


通常是要用ps画画来做flash所不能画到的图画是吗?弄出来的image不是会很大咩?如果file size弄小的话, image就会变烂变pixelize了噢... 再说,把bitmap放在flash做motion会很吃space,而且test movie的时候会弄到电脑lag lag的...

vern银河,我想跟你学更advance的ps design skill, 我还得向你指教



原帖由 super-tomato 于 5-8-2009 12:06 AM 发表


是說遊戲中的 Editor

你怎麼不會把 object 和背景圖片分開, 這樣背景圖片就可以一直重複使用
倒影可以複製 object 之後反方向放置之後在下方的 Properties 之中把 Color 設定為 Advanced, 然後在 Settings 中設定 rgb 顏色和你所要的 Alpha 值即可


tomato兄,我的倒影是这样的,如果像你所说的话,我的倒影就不会有 “深到浅“ 的感觉了...

这个是formal的做法吗?

这个固然也可用,但是如果背景有图案就不能用了
这样的话,真的一定要用ps吗?
回复

使用道具 举报

发表于 5-8-2009 02:56 PM | 显示全部楼层
原帖由 wildkyo 于 5-8-2009 10:33 AM 发表


通常是要用ps画画来做flash所不能画到的图画是吗?弄出来的image不是会很大咩?如果file size弄小的话, image就会变烂变pixelize了噢... 再说,把bitmap放在flash做motion会很吃space,而且test movie的时候会弄 ...

你在Flash里做倒影的做法,其实我也有研究过。不过问题也是和你的一样,对于不纯底色的Movie就会露出马脚了。
通常来说,只要你的照片不是Resolution上千的,放在Flash里播就不会有Lag的问题。当然,如果你做Filter效果重叠的话,Lag也是没办法的了。

倒影的图片,需要保留透明背景,PNG会比较好。如果你的图片只有黑白,或是单一颜色,或是色调简单的图片,你可以考虑用Gif。不过前提是Gif会将图片没有显示到的色调在格式中删除或压缩来减少大小,这样一来若是你的图片是颜色比较多样化的,自然会变得Pixelized。至于PNG就没有这个问题,而且个人认为PNG的素质比JPEG好,又能够显示透明底色。

图片只要控制好,其实也是可以做到不Lag的。重点是你怎样呈现。就像ActionScript同一个效果,有很多种不同的写法,只是看你要选择用传统麻烦的写法,还是动动脑经话一点时间来写一个能够重复使用的Code。若是你怕图片吃Library会让FlashLoading很慢,可以去找找loadMovie的用法,在执行Flash的时候从外面将图片Import进你的Flash Movie里。
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
原帖由 VernGalaxy 于 5-8-2009 02:56 PM 发表

你在Flash里做倒影的做法,其实我也有研究过。不过问题也是和你的一样,对于不纯底色的Movie就会露出马脚了。
通常来说,只要你的照片不是Resolution上千的,放在Flash里播就不会有Lag的问题。当然,如果你做Fi ...


之前我有把它改成mask还是不能, 是不是我们用old version flash的关系噢?




原帖由 super-tomato 于 5-8-2009 08:57 PM 发表



如果你要 gradient 的效果也不難啊, 請下載以下的演示
http://super-tomato.net/download/GradientMask.exe



tomato兄的技术果然一流啊, 小弟实在佩服五体投地!!

我之前已有try过用mask layer来做, 可是效果只是好像用solid mask没什么两样...是不是我是用mx 2004, 所以gradient的masking不能support... ??
至于我学做了你的tutorial, 情况还是跟我刚在讲的一样..

我没用过flash cs3咧, 什么是"using runtime bitmap caching"??  

http://super-tomato.net/ 的home page 用手指着头的人, 是你吗?
回复

使用道具 举报

发表于 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()呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT


本周最热论坛帖子本周最热论坛帖子

ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2026 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 4-5-2026 11:46 PM , Processed in 0.108074 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表