Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.09.2009, 19:13
Kud вне форума Посмотреть профиль Отправить личное сообщение для Kud Найти все сообщения от Kud
  № 1  
Ответить с цитированием
Kud

Регистрация: Sep 2009
Сообщений: 3
Question Наследование и композиция 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".

Старый 28.09.2009, 19:23
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 2  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Работает и без наследования.

Старый 28.09.2009, 19:33
Kud вне форума Посмотреть профиль Отправить личное сообщение для Kud Найти все сообщения от Kud
  № 3  
Ответить с цитированием
Kud

Регистрация: Sep 2009
Сообщений: 3
Разобрался в чем была проблема.
Надо было в свойствах Linkage оставить пустым поле "AS 2.0 class".

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

Код AS1/AS2:
function gg ():Void {
	tb.gotoNextFrame();
}
 
setInterval(gg, 1000);
почему так работает?
Код AS1/AS2:
setInterval(tb.gotoNextFrame, 1000);
а так нет?


Последний раз редактировалось Kud; 28.09.2009 в 19:53.
Старый 28.09.2009, 20:09
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 4  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Два типа синтаксиса setInterval:
Цитата:
setInterval(functionReference:Function, interval:Number, [param1:Object, param2, ..., paramN]) : Number
setInterval(objectReference:Object, methodName:String, interval:Number, [param1:Object, param2, ..., paramN]) : Number

Старый 28.09.2009, 20:14
Kud вне форума Посмотреть профиль Отправить личное сообщение для Kud Найти все сообщения от Kud
  № 5  
Ответить с цитированием
Kud

Регистрация: Sep 2009
Сообщений: 3
спасибо

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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