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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.06.2008, 18:35
3d Developer вне форума Посмотреть профиль Найти все сообщения от 3d Developer
  № 1  
Ответить с цитированием
3d Developer
Banned
[+1 02.07.08]
[+3 02.07.08]

Регистрация: Jul 2007
Сообщений: 52
По умолчанию Флаги ();

Пишу кнопочный класс простейший :

Код:
class nav.MainMenu extends MovieClip {
	
	var _loc1:MovieClip;
	
	var _loc2:TextField;
	
	public function MainMenu() {
		
		this.onRollOver = a_Roller;
		
		this.onRollOut = b_Roller;
		
		this.onReleaseOutside = b_Roller;
		
		this.onRelease = c_Roller;
		
		
	}
	function a_Roller() {
		this.gotoAndPlay("Over");
	}
	function b_Roller() {
		this.gotoAndPlay("Out");
	}
	function c_Roller() {
		this.gotoAndPlay("Release");
		this.enabled = false;
	}
}
Встает вопрос : после нажатия кнопки она не доступна; как же теперь компактнее написать чтобы при нажатии след кнопки все остальные открывались ?

Кнопок 8 штук. Доступ к ним использую с помощью имени

Код:
 if (this._name =="_stud") { _loc2.text = "Студия" };
Да и еще вопрос какой наилучший способ обращения к классам кнопок мой метод описан выше.


Последний раз редактировалось 3d Developer; 29.06.2008 в 18:49.
Старый 29.06.2008, 18:57
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 2  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Здравствуйте 3d Developer!

Мне не совсем понятна вот эта конструкция:

Цитата:
Код:
function a_Roller() {
		this.gotoAndPlay("Over");
	}
	function b_Roller() {
		this.gotoAndPlay("Out");
	}
	function c_Roller() {
		this.gotoAndPlay("Release");
		this.enabled = false;
	}
Для чего она? Если для "скрытия" и "открытия кнопок", то не лучше ли делать это напрямую по их имени.
В коде я не вижу инициализацию _loc1 и _loc2. Объявление есть, а инициализации похоже нет. Или я неправ.
Потом, обратите внимание _loc1 и _loc2 без аттрибута private, а значить нарушается принцип инкапсуляции коцепции ООП - пользуйтесь акссессорами или открытыми методами для инициализации закрытых свойств.

И вообще, по приведенному классу трудно определить, что он делает. Поэтому, сделайте описание того, что Вы хотите сделать подробно по пунктам, обрисуйте варианты взаимодействия программы с пользователем, укажите аспекты и условия.
__________________
Случайность, господа, это знаете ли непознанная необходимость.

Старый 29.06.2008, 19:06
3d Developer вне форума Посмотреть профиль Найти все сообщения от 3d Developer
  № 3  
Ответить с цитированием
3d Developer
Banned
[+1 02.07.08]
[+3 02.07.08]

Регистрация: Jul 2007
Сообщений: 52
хм... странное мнение. Как бы так : this.enabled = false; значит что кнопка недоступна.

Далее Private мы используем в том случае если прячем _loc1 и _loc2 от области видимого кода. А _loc1 и _loc2 есть обычные мувиклипы находящиеся внутри кнопки и если дать их в привайт (поидее) то работать не будут. Далее _loc1 не определена как таковая в коде это так( она на всяк случай у мня висит вдруг че добавлю). _loc2 текствовое поле - определено.


И так ставлю вопрос более понтяным :
При нажатии кнопки под действием this.enabled = false; кнопка становится недоступна но она так же и остается недоступной когда я нажму вторую кнопку класса и т.д. да хоть 500 и все они будут недоступными для нажатия больше.

Вопрос стоял в том как аккуратно избавится от данных событий тоесть ПРИ нажатии кнопки A ( она стала недоступна ) а кнопки B,c,D,E получили свойство enabled = true;
Как то так... надеюсь понятно.
Просто писать так типа :

Код:
 if (this._name == "_newsbtn") {
	_parent._newsect.enabled = true;
	_parent._newsect.gotoAndStop("Over");
	_parent._newsarc.enabled = true;
	_parent._newsarc.gotoAndStop("Over");
мне кажеться не гуманным когда таких кнопок море этож класс епт

Старый 29.06.2008, 19:45
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
class nav.MainMenu extends MovieClip {
	
	private static var __instances:Array;
	private static function __enableAll():void
	{
		var i:Number;
		var l:Number = __instances.length;
		for (i = 0; i < l; i++) {
			MovieClip(__instances[i]).enabled = true;
		}
	}
	
	var _loc1:MovieClip;
	
	var _loc2:TextField;
	
	public function MainMenu() {
		this.onRollOver = a_Roller;
		this.onRollOut = b_Roller;
		this.onReleaseOutside = b_Roller;
		this.onRelease = c_Roller;
		
		if (!__instances) __instances = [];
		__instances.push(this);
	}
	function a_Roller() {
		this.gotoAndPlay("Over");
	}
	function b_Roller() {
		this.gotoAndPlay("Out");
	}
	function c_Roller() {
		this.gotoAndPlay("Release");
		__enableAll();
		this.enabled = false;
	}
}
Ну, так, например.
__________________
Hell is the possibility of sanity

Старый 29.06.2008, 19:50
3d Developer вне форума Посмотреть профиль Найти все сообщения от 3d Developer
  № 5  
Ответить с цитированием
3d Developer
Banned
[+1 02.07.08]
[+3 02.07.08]

Регистрация: Jul 2007
Сообщений: 52
спасибо вам большое!

Старый 30.06.2008, 01:40
3d Developer вне форума Посмотреть профиль Найти все сообщения от 3d Developer
  № 6  
Ответить с цитированием
3d Developer
Banned
[+1 02.07.08]
[+3 02.07.08]

Регистрация: Jul 2007
Сообщений: 52
WVXVW прошу Вас описать вообщем испльзованный код. Я в программ недавно плохо понимаю некоторые моменты....

Кроме всего описанного как еще дописать чтобы после события onRelease произошло событие gotoAndStop("Over") у всех кроме того у которого произошло событие onRelease/
Пробовал добавить так
Код:
 MovieClip(__instances[i]).gotoAndStop("Over");
но ничего не выходит видимо загвоздка в другом

Поясните плиз вот эти 2 строчки мне неособо понятны они почему так и что они делают:

Код:
 if (!__instances) __instances = [];
		__instances.push(this);

Старый 30.06.2008, 04:30
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ок, мы создаем статическую переменную типа массив, и в нее складываем все вновь созданные экземпляры нашего класса (на самом деле не самый удачный ход, т.как удаляй экземпляр класса нам нужно будет удалить и ссылку на него из этого массива. Поэтому в примере добавлен небольшой хак, позволяющий до удаления клипа "отписаться".
Чтобы проиграть остальные клипы, я бы добавил еще одну статическую переменную указывающую на клип, который проигрывать не нужно, и, соответственно, перебирая клипы в цикле его бы пропустил.
Пример прилагается.
Вложения
Тип файла: rar test_ball.rar (4.7 Кб, 37 просмотров)
__________________
Hell is the possibility of sanity

Старый 30.06.2008, 13:12
3d Developer вне форума Посмотреть профиль Найти все сообщения от 3d Developer
  № 8  
Ответить с цитированием
3d Developer
Banned
[+1 02.07.08]
[+3 02.07.08]

Регистрация: Jul 2007
Сообщений: 52
Спасибо Вам. Если что попробую отписаться в личку!

Старый 30.06.2008, 13:35
3d Developer вне форума Посмотреть профиль Найти все сообщения от 3d Developer
  № 9  
Ответить с цитированием
3d Developer
Banned
[+1 02.07.08]
[+3 02.07.08]

Регистрация: Jul 2007
Сообщений: 52
WVXVW Вообщем то во флеш я давно но как аниматор в основном. Основные правила написание простейших функций я знаю. Вот даже разобрался сам как простые классы писать ((( но не доконца. Недавно попалась книженция Гурского на АС2.0 , что скажите стоит ли ее читать ? А точнее хорошо ли и понятно ли написана глава ООП в данной книге ? ( Просто именно ООП меня интересует) Заметил в преведенном ниже коде ASnative сильно смахивающую на недокументированные функции языка )))). хотя может это ит от Ball duplicate взято ) точно не глядел

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

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

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


 


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


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