如何解决关于在动作脚本3中添加属性的问题
| 我会在要求清楚的部分上加一个“#”符号! 这是此链接中的代码 http://www.emanueleferonato.com/2008/05/02/creation-of-a-matching-game-with-flash-and-as3/ 我知道此链接对其进行了详细说明,但我仍然没有代码的某些部分 哈哈 包装{ import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class color_match extends Sprite {
private var first_tile:colors;
private var second_tile:colors;
private var pause_timer:Timer;
var colordeck:Array = new Array(1,1,2,3,4,5,6,7,8,8);
public function color_match() {
for (x=1; x<=4; x++) {
for (y=1; y<=4; y++) {
var random_card = Math.floor(Math.random()*colordeck.length);
var tile:colors = new colors();
//why is .col attribute not declared?
//#
tile.col = colordeck[random_card];
colordeck.splice(random_card,1);
tile.gotoAndStop(9);
tile.x = (x-1)*82;
tile.y = (y-1)*82;
tile.addEventListener(MouseEvent.CLICK,tile_clicked);
addChild(tile);
}
}
}
public function tile_clicked(event:MouseEvent) {
//what does \"as colors\" suppose to mean here,can i just omit it?,//does the type of any display obj with event.currentTarget/target
//generates a type OBJECT
//#
var clicked:colors = (event.currentTarget as colors);
if (first_tile == null) {
first_tile = clicked;
first_tile.gotoAndStop(clicked.col);
}
else if (second_tile == null && first_tile != clicked) {
second_tile = clicked;
second_tile.gotoAndStop(clicked.col);
if (first_tile.col == second_tile.col) {
pause_timer = new Timer(1000,1);
pause_timer.addEventListener(TimerEvent.TIMER_COMPLETE,remove_tiles);
pause_timer.start();
}
else {
pause_timer = new Timer(1000,reset_tiles);
pause_timer.start();
}
}
}
public function reset_tiles(event:TimerEvent) {
first_tile.gotoAndStop(9);
second_tile.gotoAndStop(9);
first_tile = null;
second_tile = null;
pause_timer.removeEventListener(TimerEvent.TIMER_COMPLETE,reset_tiles);
}
public function remove_tiles(event:TimerEvent) {
removeChild(first_tile);
removeChild(second_tile);
first_tile = null;
second_tile = null;
pause_timer.removeEventListener(TimerEvent.TIMER_COMPLETE,remove_tiles);
}
}
}
解决方法
第一个问题“为什么不声明.col属性?”是因为对象是动态类。这意味着您可以在对象上设置任何名称的属性,以便以后可以检索它们。在这种情况下,它用于存储一个值,该值以后将在tile_clicked()函数中使用。这可以称为任何名称,例如tile.myvalue = colordeck [random_card];值得注意的是,使用这种动态属性很灵活,但是您将丢失任何暗示您的IDE可能给出的代码。
第二个问题“颜色是什么意思?”是类型转换。据flash所知,event.current目标只是一个通用对象,尝试将通用对象分配给声明为特定类型的变量可能会导致编译器错误。通过转换对象(告诉编译器您知道该对象应该是什么),可以消除错误。
, 第16行:为图块分配一个名为col的属性,该属性表示图块的颜色
这是时间线中的颜色数!
您可以将
.col
更改为.mu
,如您所见,此文件将起作用!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。