打印

[编程] flash023大哥来救命

这是受启发重写的:

var p:String = "_root";
for (var i:Number=1;i<11;i++){
       this["m"+i+"_btn"].p = i;
       this["m"+i+"_btn"].onRollOver=function(){
              trace ("你鼠标划过"+this.p);
              _root.onEnterFrame=function(){
                     trace (this.p);  这里已经显示_root了,可下面的 if 还是不能正常运作,我没辙了
                     if (this["mc"+i+"_mc"]._currentframe<11) {
                            this["mc"+i+"_mc"].nextFrame();
                     } else {
                            delete _root.onEnterFrame;
                     }
              }
       }
       this["m"+i+"_btn"].onRollOut=function(){
              trace ("你鼠标离开"+this.p);
              this.onEnterFrame=function(){
                     if(this["mc"+i+"_mc"]._currentframe>1){
                            this["mc"+i+"_mc"].prevFrame();
                     }else{
                            delete this.onEnterFrame;
                     }
              }
       }
       this["m"+i+"_btn"].onRelease=function(){
              trace ("你点击了按钮"+this.p);
       }
}

[ 本帖最后由 HBrO 于 2008-5-12 11:05 编辑 ]

TOP

为什么不用传参数的方式做?
复制内容到剪贴板
代码:
function btn(btnMC,mainMC){
       btnMC.onRollOver=function(){
              _root.onEnterFrame=function(){
                     if (mainMC._currentframe<11) {
                            mainMC.nextFrame();
                     } else {
                            delete _root.onEnterFrame;
                     }
              }
       }
       btnMC.onRollOut=function(){
              this.onEnterFrame=function(){
                     if(mainMC._currentframe>1){
                            mainMC.prevFrame();
                     }else{
                            delete this.onEnterFrame;
                     }
              }
       }
       btnMC.onRelease=function(){
       }    
}
for (var i:Number=1;i<11;i++){
    btn(this["m"+i+"_btn"],this["mc"+i+"_mc"]);
}

TOP

更新在6楼

[ 本帖最后由 flash023 于 2008-5-11 20:05 编辑 ]
http://www.flash023.cn 终极讨厌

TOP

回复 flash023 在 3# 的帖子

老哥,我的 mc 不在 btn 里面哦

所有 mc 在 _root下 mc 层的一个关键帧里

如果按照这样就要全移到 btn 里面了

TOP

回复 2# moyu0921

哥们,成!
卡壳儿2天,终于解决,可以继续我剩下的菜单了动作了。
想偷懒却花了更多的时间,唉!
虽然还有些缺陷,可以慢慢优化。
附件: 您所在的用户组无法下载或查看附件,您需要注册/登录后才能查看!

TOP

哦,我看错了,哈哈,粗心大意了。
复制内容到剪贴板
代码:
var p:String = "_root";
for (var i:Number = 1; i<11; i++) {
    this["m"+i+"_btn"].p = i;
    this["m"+i+"_btn"]._mc = this["mc"+i+"_mc"];
    this["m"+i+"_btn"].onRollOver = function() {
        trace("你鼠标划过"+this.p);
        this._mc.onEnterFrame = function() {
            if (this._currentframe<11) {
                this.nextFrame();
            } else {
                delete this.onEnterFrame;
            }
        };
    };
    this["m"+i+"_btn"].onRollOut = function() {
        trace("你鼠标离开"+this.p);
        this._mc.onEnterFrame = function() {
            if (this._currentframe>1) {
                this.prevFrame();
            } else {
                delete this.onEnterFrame;
            }
        };
    };
    this["m"+i+"_btn"].onRelease = function() {
        trace("你点击了按钮"+this.p);
    };
}
[ 本帖最后由 flash023 于 2008-5-11 20:06 编辑 ]
http://www.flash023.cn 终极讨厌

TOP

回复 6#

这样比用 function 传递好
不会卡住
用 function 鼠标移动快点的话
收缩的动画会卡住



附上正在做的东西
附件: 您所在的用户组无法下载或查看附件,您需要注册/登录后才能查看!

TOP

引用:
原帖由 chrisphany 于 2008-5-11 20:01 发表
哥们,成!
卡壳儿2天,终于解决,可以继续我剩下的菜单了动作了。
想偷懒却花了更多的时间,唉!
虽然还有些缺陷,可以慢慢优化。87867
其实你只要在你的鼠标onRollOver那trace(i);看下
就可以看到无论是鼠标经过哪个按钮输出的结果都是11而并非是你相对按钮的数字了
因为在你触发按钮事件的时候,i已经循环完毕,这时候变量i的值已经变成了11,所以你无论触发哪个按钮
都会让this["mc"+11+"_mc"] 这个MC执行;
所以这个用参数传入的方法做,就可以对号入座了

TOP

嗯,运行过传参数和flash023的直接循环的
发现传参数的方法在鼠标快速移动过各个按键的时候,回收动作会卡住,现象如
而用flash023的直接循环出来的就没有这个现象,现象如
从脚本上推理论上都不会出现这个的,个人觉得脚本只是给按钮对号入座的吧?怎么出现了两种现象。
附件: 您所在的用户组无法下载或查看附件,您需要注册/登录后才能查看!

TOP

用的驱动事件不一样。
我写那个是各自驱动各自跳帧。而传参那个控制跳帧用了  _root.onEnterFrame驱动,当新的函数执行此驱动时,旧的事件会自动被摧毁。问题就在这里了。
并不是传参的方式不行,而是选择的驱动事件不一样。
http://www.flash023.cn 终极讨厌

TOP

谢谢指教,这两天因为想偷懒还加深了解到些控制上的东西。
这是经提示后修改的传参数脚本,哈哈
引用:
function btn(btnMC,mainMC){
       btnMC.onRollOver=function(){
              mainMC.onEnterFrame=function(){
                     if (this._currentframe<11) {
                            this.nextFrame();
                     } else {
                            delete this.onEnterFrame;
                     }
              }
       }
       btnMC.onRollOut=function(){
              mainMC.onEnterFrame=function(){
                     if(this._currentframe>1){
                            this.prevFrame();
                     }else{
                            delete this.onEnterFrame;
                     }
              }
       }
       btnMC.onRelease=function(){
       }   
}
for (var i:Number=1;i<11;i++){
    btn(this["m"+i+"_btn"],this["mc"+i+"_mc"]);
}

TOP

啊哦 我只是针对你要的分别给各个按钮加事件做了修改
至于驱动事件我是复制你的 并没有改动

TOP