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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.10.2006, 18:42
island вне форума Посмотреть профиль Отправить личное сообщение для island Посетить домашнюю страницу island Найти все сообщения от island
  № 1  
Ответить с цитированием
island
 
Аватар для island

Регистрация: Jul 2006
Адрес: nsk
Сообщений: 93
Отправить сообщение для island с помощью ICQ
По умолчанию Проблемка с централизацией кода

В первом кадре fla-файла :
Код:
import com.General;
General.main(_root);
Класс General:
import com.Line;
Код:
class com.General {
	private var l:Line;
	public function General() {
		l = new Line(_root);
	}
	public static function main(mc:MovieClip) {
		var g = new General();
	}
}
Класс Line:
Код:
class com.Line {
	private var line_mc:MovieClip;
	public function Line(mc:MovieClip) {
		line_mc = mc.attachMovie("line","line",10);
		line_mc.baton.onRelease = function() {
			trace("строка 1");
			some_func();
		}
	}
	private function some_func() {
		trace("строка 2");
	}
}
В библиотеке fla-файла имеется мувиклип line, внутри которого кнопка с именем “baton”. При тестировании фильма «строка 1» выводится, а «строка 2» нет. Насколько я понимаю, это происходит из-за того, что интерпретатор ищет функцию some_func на временной шкале клипа, на котором расположена кнопка baton, а вовсе не в классе Line. Как бы сделать так, чтобы при обрабатывании событий с кнопки ссылаться на функцию внутри класса?
Я придумал временное решение, но оно меня по некоторым причинам не устраивает.
В функции main класса General при событии onMouseDown происходит вызов метода класса Line, в котором хиттестом проверяется попадание щелчка мыши по кнопке.


Последний раз редактировалось iNils; 22.10.2006 в 19:40.
Старый 22.10.2006, 19:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Используйте Delegate.
line_mc.baton.onRelease = mx.utils.Delegate.create(this,this.some_func);

з.Ы. Вас не научили оформлять код тегами CODE?
з.Ы.Ы. А почему в полных именах классов отсутствует доменное имя, но есть зона?

Старый 23.10.2006, 07:59
island вне форума Посмотреть профиль Отправить личное сообщение для island Посетить домашнюю страницу island Найти все сообщения от island
  № 3  
Ответить с цитированием
island
 
Аватар для island

Регистрация: Jul 2006
Адрес: nsk
Сообщений: 93
Отправить сообщение для island с помощью ICQ
Цитата:
Используйте Delegate.
line_mc.baton.onRelease = mx.utils.Delegate.create(this,this.some_func);
Спасибо, работает ) изящно и без велосипедов.

Цитата:
з.Ы. Вас не научили оформлять код тегами CODE?
Такая оплошность с моей стороны больше не повторится )

Цитата:
з.Ы.Ы. А почему в полных именах классов отсутствует доменное имя, но есть зона?
я на флэше относительно недавно, поэтому способ, по которому я организую структуру программы скорей всего не самый рациональный. У меня в папке с fla-файлом находится папка com с файлами классов, используемых в данной конкретной программе. Вроде все работает )

Старый 23.10.2006, 11:33
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
island, дело в том, что «com» используется только лишь в том случае, если требуется указать адрес сайта разработчика. А у вас же только доменная зона.

В принципе, кладите классы, куда хотите, но это несколько неправильно.

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

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

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


 


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


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