查看完整版本: 求解

llsansun 2008-7-2 11:50

求解

[code]package my_as.simple_button{
import flash.utils.Timer;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
public class button_as extends MovieClip {
/*----------------本类中的变量---------------*/
//时间变量
private var Timer_t:Timer;
//记录拥有多少个需要选中的MC
private var array:Array=new Array();
//记录array数组中是否有相同的元素。
private var All_Num:uint=0;
/*----------------构造函数-------------------*/
public function button_as(mc:MovieClip,timer:Timer,array_a:Array):void {
//函数赋值
array=array_a;
Timer_t=timer;
//帧听函数
mc.addEventListener(MouseEvent.MOUSE_OVER,createOver);
mc.addEventListener(MouseEvent.MOUSE_OUT,createOut);
mc.addEventListener(MouseEvent.MOUSE_UP,createUp);
mc.addEventListener(MouseEvent.MOUSE_DOWN,createDown);
mc.buttonMode=true;
}
//经过影片的动作
private function createOver(event:MouseEvent) {
if (event.target.currentFrame==1) {
event.target.gotoAndStop(2);
}
}
//离开影片的动作
private function createOut(event:MouseEvent) {
if (event.target.currentFrame==2) {
event.target.gotoAndStop(1);
}
}
//按下影片的动作
private function createDown(event:MouseEvent) {
event.target.gotoAndStop(3);
event.target.buttonMode=false;
//trace("length="+array.length);
//数组还未有值时就直接赋值
if (array.length==0) {
array.push(event.target);
} else {
//存在一个以上的值时就要判断数组是否已经有了该元素,没有才加入数组
for (var i=0; i<ARRAY.LENGTH; {
if (event.target==array[i]) {
All_Num=1;
break;
}
}
//trace("111="+parent[array.toString()]);
//没有就加入数组
if (All_Num==0) {
array.push(event.target);
Follow_Fun(array);
}
//清零
All_Num=0;
}
//trace("aa="+array.toString());
/*---------------按钮相互之间的动作变化----------------*/
function Follow_Fun(...arg) {
for (var i=0; i<ARG.LENGTH; {
if (arg[i].currentFrame==3) {
} else {
arg[i].play();
arg[i].buttonMode=true;
}
}
}
}
//释放影片的动作
private function createUp(event:MouseEvent) {
Timer_t.start();
}
}
}[/code]
这里为什么会抛出
“TypeError: Error #1006: play 不是函数。”
这样的错误的呢?
请大虾指教!

ycccc8202 2008-7-2 16:38

这段代码不对吧
[code]function Follow_Fun(...arg) {
for (var i=0; i<ARG.LENGTH; {
if (arg[i].currentFrame==3) {
} else {
arg[i].play();
arg[i].buttonMode=true;
[/code]

Poshidon 2008-7-2 17:28

Follow_Fun(array);这里将一个数组作为函数参数,[code]function Follow_Fun(...arg) {//这里arg是一个二维数组了
for (var i=0; i<ARG.LENGTH; i++){
if (arg.currentFrame==3) {
} else {
arg.play();//数组不能play();
arg.buttonMode=true;
}[/code]

[[i] 本帖最后由 Poshidon 于 2008-7-2 17:30 编辑 [/i]]

Poshidon 2008-7-2 17:29

为什么要自动斜体呢?

llsansun 2008-7-2 17:56

谢谢!
代码是没错的。上面有些没显示出来。
如果我把
for (var i=0; i<ARG.LENGTH; i++){
if (arg.currentFrame==3) {
} else {
arg.play();//数组不能play();
arg.buttonMode=true;
}
这句放出来就没问题,而放在函数里就有问题。
arg是二维数组,那我该怎么解决呢?

Poshidon 2008-7-2 18:04

对于数组的每一项进行操作,最好的方法是forEach ()
[code]
array.forEach(some_fun);
function some_fun(item:*,index:int,array:Array){
//这里是要对数组每一个元素进行的操作;
}
[/code]

Poshidon 2008-7-2 18:07

[code]
array.forEach(some_fun);
function some_fun(item:*,index:int,array:Array){
if (item.currentFrame==3) {
} else {
item.play();
item.buttonMode=true;
}
}[/code]
页: [1]
查看完整版本: 求解