вопрос о добавлении атрибутов в ActionScript 3 - PullRequest
0 голосов
/ 04 июня 2011

Я поставлю знак "#" на той части, где я прошу ясности!это код из этой ссылки 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,2,3,3,4,4,5,5,6,6,7,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,1);
                pause_timer.addEventListener(TimerEvent.TIMER_COMPLETE,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);
    }
}

}

Ответы [ 2 ]

0 голосов
/ 20 июля 2017

Строка 16: присвоение плитке атрибута, который представляет цвет плитки и это номер цвета в TimeLine!.

вы можете изменить .col на i.e. .mu и, как вы можете видеть, этот файл будет работать!

0 голосов
/ 04 июня 2011

Первый вопрос, "почему атрибут .col не объявлен?" потому что объект является динамическим классом. Это означает, что вы можете установить свойства любого имени для объекта, чтобы вы могли получить их позже. В этом случае он используется для хранения значения, которое позже используется в функции tile_clicked (). Это может называться как угодно, например: tile.myvalue = colordeck [random_card]; Стоит отметить, что использование таких динамических свойств является гибким, но вы потеряете любой код, на который может дать ваша IDE.

Второй вопрос: «что означает« цвета »?» это тип актерского состава. Насколько нам известно, цель event.current - это просто универсальный объект, и попытка назначить универсальный объект переменной, объявленной как определенный тип, может привести к ошибкам компилятора. Приведя объект (сообщая компилятору, что вы знаете, каким должен быть этот объект), вы устраняете ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...