Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Наследование и композиция MovieClip (http://www.flasher.ru/forum/showthread.php?t=130545)

Kud 28.09.2009 19:13

Наследование и композиция MovieClip
 
Вопрос в следующем.

Код AS1/AS2:

class Avatar extends MovieClip {
        public static var HAPPY:Number = 0;
        public static var SAD:Number = 1;
        public static var IDLE:Number = 2;
 
        private var av_mc:MovieClip;
 
        public function  Avatar(name:String,
                                                        target:MovieClip,
                                                        depth:Number,
                                                        x:Number,
                                                        y:Number) {
                av_mc = target.attachMovie("AvatarSymbol", name, depth);
                setState(Avatar.HAPPY);
                setPosition(x, y);
        }
        public function setPosition(x:Number, y:Number):Void {
                av_mc._x = x;
                av_mc._y = y;
        }
        public function setState(newState:Number):Void {
                switch(newState) {
                        case Avatar.HAPPY:
                                av_mc.gotoAndStop("HAPPY");
                                break;
                        case Avatar.SAD:
                                av_mc.gotoAndStop("SAD");
                                break;
                        case Avatar.IDLE:
                                av_mc.gotoAndStop("IDLE");
                                break;
                }
        }
}
 
var av:Avatar;
av = new Avatar("avatar", this, 0, 300, 200);
av.setState(Avatar.HAPPY);

Работает корректно. Но если убрать наследование, то есть написать вместо "class Avatar extends MovieClip" "class Avatar", то строка "av.setState(Avatar.HAPPY);" работает не корректно: смена кадра не происходит.

Вопрос почему? Ведь в конечном счете и так и сяк вызывается "av_mc.gotoAndStop("HAPPY")", а "av_mc" это "MovieClip".

Kuruki 28.09.2009 19:23

Работает и без наследования.

Kud 28.09.2009 19:33

Разобрался в чем была проблема.
Надо было в свойствах Linkage оставить пустым поле "AS 2.0 class".

Добавлено через 17 минут
Ещё вопрос, пока тема не остыла, правда уже другой.

Код AS1/AS2:

function gg ():Void {
        tb.gotoNextFrame();
}
 
setInterval(gg, 1000);

почему так работает?
Код AS1/AS2:

setInterval(tb.gotoNextFrame, 1000);

а так нет?

Kuruki 28.09.2009 20:09

Два типа синтаксиса setInterval:
Цитата:

setInterval(functionReference:Function, interval:Number, [param1:Object, param2, ..., paramN]) : Number
setInterval(objectReference:Object, methodName:String, interval:Number, [param1:Object, param2, ..., paramN]) : Number

Kud 28.09.2009 20:14

спасибо


Часовой пояс GMT +4, время: 12:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.