flash自定义函数讨论?

来源:百度知道 编辑:UC知道 时间:2024/07/05 05:06:24
一段代码有时自定义函数是必须的,它不只是起到整洁作用.有不同观点的没有?比如下面是我写的代码
for (var i = 1; i<5; i++) {
_root.createEmptyMovieClip('mc'+i, i);
qw(i);
}

function qw(i) {
eval("b"+i).onPress = function() {
trace(i)
var q:MovieClipLoader = new MovieClipLoader();
q.loadClip(i+'.jpg', 'mc'+i, i+20);
};
}
不自定义函数就不能按钮动态控制加载图片.
补充 :意思是说把函数大括号内的代码全移到for循环里,如果照帮助里讲的代码自定义函数只是起到整洁重复利用的效果的话,移到 for里就会执行,是这样理解吗?可实事已证明此代码不自定义函数就无法执行.我只是证明下我的看法,或者我的代码不自定义这个函数能否写出来

如果详细的说,又要长篇大论了,最近特忙,一个多月没上知道了!!!
首先你把两个i搞混了,for()里面的i和function qw里的i不是同一个,建议不要用同名的变量,参数;for里i相当于一个全局的,而自定义函数qw里的i只对qw{}里有效
如果你把qw里的内容直接搬进for内,如
for(var i=1;i<5;i++){
_root.createEmptyMovieClip('mc'+i, i);
eval("b"+i).onPress = function() {
trace(i)
var q:MovieClipLoader = new MovieClipLoader();
q.loadClip(i+'.jpg', 'mc'+i, i+20);
};
}
我们说在for()里都做了什么
1.创建了mc1,mc2,mc3,mc4
2.给b1,b2,b3,b4各添加了一个onPress事件
3.把i的值从1增加到5

这样你每次调用eval("b"+i).onPress的时候每次都会执行
q.loadClip(5.jpg, mc5, 5+20);
因为这里的i相当于一个全局的,而mc5根本就不存在,所以就没有效果
你可在for外声明一个mc5试下
看了上面的应该理解了为什么放到for里面不行了吧,你也可以改成下面的
for (var i = 1; i<5; i++) {
_root.createEmptyMovieClip('mc'+i,i);
//qw(i);
eval("b"+i).onPress = function() {
var k:String = this._name.substr(-1, 1);
trace(k);
var q:MovieClipLoader = new MovieClip