返回   webstudio Forums > webstudio book > flash网站建设技术精粹

发表新主题 回复
 
主题工具 显示模式
旧 2007-09-04, 06:08 PM   #1
boyzone
高级会员
级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时
 
注册日期: 07-05
帖子: 209
现金:141金币
资产:591金币
boyzone 向着好的方向发展
发送 QQ 消息给 boyzone
默认 第三章中的缓动菜单问题。

var textArray:Array = new Array("home", "about", "portfolio", "profile", "contact");
for (var i = 1; i<textArray.length+1; i++) {
var tempmenu = this["bt"+i];
trace(tempmenu);
tempmenu.title_txt.text = textArray[i-1];
tempmenu.begin = 100;
tempmenu.end = 140;
tempmenu.time = 0.8;
tempmenu.onRollOver = function(mc, easy) {
big(this, mx.transitions.easing.Elastic.easeOut);
};
tempmenu.onRollOut = function(mc, easy) {
small(this, mx.transitions.easing.Elastic.easeIn);
};
}
function big(mc, easy) {
ballTween = new mx.transitions.Tween(mc, "_xscale", easy, mc.begin, mc.end, mc.time, true);
ballTween = new mx.transitions.Tween(mc, "_yscale", easy, mc.begin, mc.end, mc.time, true);
}
function small(mc, easy) {
smallTween = new mx.transitions.Tween(mc, "_xscale", easy, mc.begin, mc.end, mc.time, true);
smallTween = new mx.transitions.Tween(mc, "_yscale", easy, mc.begin, mc.end, mc.time, true);
}

找不出问题出在哪里。
上传的附件
文件类型: rar 未命名-1.rar (4.5 KB, 366 次查看)
boyzone 当前离线  
回复时引用此帖
旧 2007-09-04, 06:42 PM   #2
boyzone
高级会员
级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时
 
注册日期: 07-05
帖子: 209
现金:141金币
资产:591金币
声望: 10
boyzone 向着好的方向发展
发送 QQ 消息给 boyzone
默认 回复: 第三章中的缓动菜单问题。

我找到问题了.是mc.begin 和mc.end的位置问题.
boyzone 当前离线  
回复时引用此帖
旧 2007-09-04, 09:41 PM   #3
egoldy
沙漠孤鹰
级别:22 | 在线时长:617小时 | 升级还需:4小时级别:22 | 在线时长:617小时 | 升级还需:4小时级别:22 | 在线时长:617小时 | 升级还需:4小时级别:22 | 在线时长:617小时 | 升级还需:4小时
 
egoldy 的头像
 
注册日期: 04-07
住址: 北京
帖子: 2835
精华:4
现金:2411金币
资产:1668861金币
声望: 650
egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀
发送 MSN 消息给 egoldy 发送 QQ 消息给 egoldy
默认 回复: 第三章中的缓动菜单问题。

呵呵.

http://www.webstudio.com.cn/wssign/egoldyfoot.jpg
egoldy 当前离线  
回复时引用此帖
旧 2007-09-04, 09:54 PM   #4
boyzone
高级会员
级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时
 
注册日期: 07-05
帖子: 209
现金:141金币
资产:591金币
声望: 10
boyzone 向着好的方向发展
发送 QQ 消息给 boyzone
默认 回复: 第三章中的缓动菜单问题。

还有个问题想不明白.

为什么是mc.end这样.而不是tempmenu.end呢?
boyzone 当前离线  
回复时引用此帖
旧 2007-09-04, 10:37 PM   #5
Mirage
高级会员
级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时
 
Mirage 的头像
 
注册日期: 07-09
帖子: 169
现金:406金币
资产:406金币
声望: 10
Mirage 向着好的方向发展
默认 回复: 第三章中的缓动菜单问题。

那是因为tempmenu是一个变值,for循环每执行一次tempmenu就变换一次,一次从btn1到btn5了,当for循环执行完成后empmenu实际上指的的是btn5,如过每个tempmenu的end和begin不一样时就不能用tempmenu.end因为此时tempmenu.end永远等于btn5.end,而不是鼠标正在经过的这个btn的end,所以不能用,当然在这个例子可以用tempmenu.end,因为都是140
对于这个案例我有个小小的扩展,不妨发下源码分享下

var txtArray:Array = new Array("首页", "我的相册", "我的好友", "查看留言", "联系方式");
var urlArray:Array = new Array("http://www.xnovo.com", "http://www.110161.com/forum/thread-5862-1-1.html", "http://www.xnovo.com/forum/profile-uid-1861.html", "http://www.xnovo.com/forum/thread-6496-1-1.html", "http://www.xnovo.com/forum/space-uid-7305.html");
var sound:Sound = new Sound();
var begin:Number = 100;
var end:Number = 300;
var time:Number = 1.5;
sound.attachSound("TADA");
for (var i = 1; i<txtArray.length+1; i++) {
var tempMenu:MovieClip = this["btn"+i];
tempMenu.title_txt.text = txtArray[i-1];
tempMenu.namex = this["btn"+i];
tempMenu.link = urlArray[i-1];
tempMenu.onRollOver = function() {
easeBig(this, mx.transitions.easing.Elastic.easeOut);
this.swapDepths(100);
sound.start(0, 1);
};
tempMenu.onRollOut = function() {
easeSmall(this, mx.transitions.easing.Elastic.easeOut);
};
tempMenu.onRelease = function():Void {
getURL(this.link, "_blank");
};
}
function easeBig(mc, easeType) {
menuTweenBig = new mx.transitions.Tween(mc, "_xscale", easeType, begin, end, time, true);
menuTweenBig = new mx.transitions.Tween(mc, "_yscale", easeType, begin, end, time, true);
}
function easeSmall(mc, easeType) {
menuTweenSmall = new mx.transitions.Tween(mc, "_xscale", easeType, end, begin, time, true);
menuTweenSmall = new mx.transitions.Tween(mc, "_yscale", easeType, end, begin, time, true);
}

其实核心在于this.swapDepths(100);因为这样鼠标经过的MC不被其他MC挡住
Mirage 当前离线  
回复时引用此帖
旧 2007-09-05, 12:50 AM   #6
boyzone
高级会员
级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时
 
注册日期: 07-05
帖子: 209
现金:141金币
资产:591金币
声望: 10
boyzone 向着好的方向发展
发送 QQ 消息给 boyzone
默认 回复: 第三章中的缓动菜单问题。

var txtArray:Array = new Array("home", "about", "link", "retu");
for (var i = 1; i < txtArray.length + 1; i++) {
temp = this["bt" + i];
temp.til.text = txtArray[i - 1];
temp.begin = 100;
temp.end = 80;
temp.time = 0.5;
temp.onRollOver = function() {
big(this, mx.transitions.easing.Elastic.easeOut);
};
temp.onRollOut = function() {
small(this, mx.transitions.easing.Elastic.easeOut);
};
}
function big(mc, easytype) {
menubig = new mx.transitions.Tween(mc, "_xscale", easytype, temp.begin, temp.end, temp.time, true);
menubig = new mx.transitions.Tween(mc, "_yscale", easytype, temp.begin, temp.end, temp.time, true);
}
function small(mc, easytype) {
menbig = new mx.transitions.Tween(mc, "_xscale", easytype, temp.end, temp.begin, temp.time, true);
menbig = new mx.transitions.Tween(mc, "_yscale", easytype, temp.end, temp.begin, temp.time, true);
}

开始这段代码执行后效果根本没有.但后来不知道怎么就OK了.
boyzone 当前离线  
回复时引用此帖
旧 2007-09-05, 10:29 PM   #7
yangedie
初级会员
级别:1 | 在线时长:9小时 | 升级还需:3小时
 
注册日期: 07-08
帖子: 6
现金:12金币
资产:12金币
声望: 10
yangedie 向着好的方向发展
默认 回复: 第三章中的缓动菜单问题。

楼主的代码,tempmenu只是出现在for循环里面,循环外面并没有对其引用,为什么会有“for循环执行完成后tempmenu实际上指的的是btn5”的问题?

var textArray:Array = new Array("home", "about", "portfolio", "profile", "contact");
for (var i = 1; i<textArray.length+1; i++) {
var tempmenu = this["bt"+i];
//trace(tempmenu);
tempmenu.title_txt.text = textArray[i-1];
tempmenu.begin = 100;
tempmenu.end = 140;
tempmenu.time = 0.8;
tempmenu.onRollOver = function() {
big(this, mx.transitions.easing.Elastic.easeOut);
};
tempmenu.onRollOut = function() {
small(this, mx.transitions.easing.Elastic.easeIn);
};
}
function big(mc, easy) {
ballTween = new mx.transitions.Tween(mc, "_xscale", easy, mc.begin, mc.end, mc.time, true);
ballTween = new mx.transitions.Tween(mc, "_yscale", easy, mc.begin, mc.end, mc.time, true);
}
function small(mc, easy) {
smallTween = new mx.transitions.Tween(mc, "_xscale", easy, mc.begin, mc.end, mc.time, true);
smallTween = new mx.transitions.Tween(mc, "_yscale", easy, mc.begin, mc.end, mc.time, true);
}
yangedie 当前离线  
回复时引用此帖
旧 2007-09-06, 10:21 AM   #8
Mirage
高级会员
级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时
 
Mirage 的头像
 
注册日期: 07-09
帖子: 169
现金:406金币
资产:406金币
声望: 10
Mirage 向着好的方向发展
默认 回复: 第三章中的缓动菜单问题。

哈哈 你trace下不就知道为什么会有“for循环执行完成后tempmenu实际上指的的是btn5”的问题了啊
Mirage 当前离线  
回复时引用此帖
旧 2007-09-06, 06:45 PM   #9
boyzone
高级会员
级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时
 
注册日期: 07-05
帖子: 209
现金:141金币
资产:591金币
声望: 10
boyzone 向着好的方向发展
发送 QQ 消息给 boyzone
默认 回复: 第三章中的缓动菜单问题。

这个实例中用tempmenu.begin tempmenu.end没有问题.当时我确实不理解.为什么用mc.begin mc.end想想mc就是tempmenu函数的传递关系代码多的时候就理解不了了.呵.
boyzone 当前离线  
回复时引用此帖
发表新主题 回复

书签

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码

论坛跳转

所有时间均为格林尼治时间 +9。现在的时间是 08:35 PM


copyright by webstudio.com.cn. All Rights Reserved.
Powered by vBulletin® 版本 3.8.3
版权所有 ©2000 - 2020,Jelsoft Enterprises Ltd.
增强包 [3.4] 制作: PHP源动力   官方中文站: vBulletin 中文