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

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

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

Регистрация: Oct 2011
Сообщений: 46
Question Сделать собственную кнопку

Чёрт, я весь на нервах. Замучали глупые непонятные нелогичные ошибки в этом проклятом AS3! Я нарисовал собственную кнопку, расширение SimpleButton. Задача до боли простая, нужно реализовать кроме самой картинки кнопки, надпись на ней по типу стандартного button.label="тралала"; Я пытаюсь это решить вставив в свой объект кнопки поверх картинки обычный textField, и потом с помощью собственного метода менять свойство text. и естесственно нихрена не получается!
Код AS3:
package  {
	import flash.display.SimpleButton;
	import flash.events.Event;
 
	public class btn extends SimpleButton {
		public var txt:String;
 
		public function btn() {
			/*if (lbl) { 
				init(s);
				} else this.addEventListener(Event.ADDED_TO_STAGE,init) */
		}
 
		public function setLabel(s:String){
			lbl.text=s;
			lbl2.text=s;
			lbl3.text=s;
		}
 
		/*function init(s:String):void {
			lbl.text=s;
			lbl2.text=s;
			lbl3.text=s;
		}*/
	}//end class
}
lbl, lbl2, lbl3 - это объекты textField на моей кнопке
тут некоторое закоментировано, это я уже испробовал 10001 способ, которые все не дали никакого результата. сами кнопки я руками размещаю на сцене, задача - просто сделать надпись на них. Поначалу вообще чтото непонятное творилось, я вписывал в textField кнопки какой то текст, а при запуске программы кнопка была пустая(без текста), сам не понял что я сделал, но когда в классе кнопки я написал пару методов, стандартный текст начал появляться при запуске, но изменить его никакими способами не получается. Может есть какой то более простой способ сделать надпись на моей кнопке? но желательно конечно сделать так, как я задумал, но ПОЧЕМУ не получается то ?


Последний раз редактировалось noobuser; 12.11.2011 в 19:17.
Старый 12.11.2011, 19:20
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 2  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
а что покажет trace(lbl);

у вас же эти TextField находятся как я понял, в разных кадрах?
вот он и будет null, вероятнее всего

Их нужно именно три штуки? или достаточно одного?
__________________
adobe AS3 manual

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Выкиньте SimpleButton в мусорку. Наследуйте свою кнопку от Sprite.

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

Регистрация: Oct 2011
Сообщений: 46
да, они находятся в разных кадрах. lbl - в кадре UP, lbl2 - OVER, lbl3 - DOWN. Не обязательно 3 штуки. Просто в каждом кадре у этих текстовых полей разные стили и координаты. я иду по пути наименьшего сопротивления и что бы минимизировать кол-во строк кода максимум делаю на сцене. т.е. я не хочу писать лишних 20 строк что бы задавать стили для текста на кнопке для всех положений кнопки. поэтому я создать заранее 3 поля с разными стилями, задача просто поменять текст в этих полях. И поэтому я пока что хочу сделать всё при помощь SimpleButton а не Sprite, что бы было минимум кода. использование MovieClip и Sprite это уже самый последний безвыходный вариант.

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

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Вы мне, а в результате и себе - так и не ответили:
Цитата:
а что покажет trace(lbl);
Из-за того что они в разных кадрах, они не могут быть инициализированы когда нужно.

пробуйте так:

[IMG]http://i28.***********/big/2011/1112/ed/37b28f0b984fe226089de0f79441eeed.png[/IMG]

Добавлено через 3 минуты
Если вам и так не устроит, тогда Bgg дело говорит, Sprite будет получше.
__________________
adobe AS3 manual


Последний раз редактировалось strangedk; 12.11.2011 в 19:38.
Старый 12.11.2011, 19:41
noobuser вне форума Посмотреть профиль Отправить личное сообщение для noobuser Найти все сообщения от noobuser
  № 6  
Ответить с цитированием
noobuser
 
Аватар для noobuser

Регистрация: Oct 2011
Сообщений: 46
да, trace(lbl) выдаёт null. но в тоже время я не понимаю почему не работает эта конструкция
Код AS3:
if (lbl) { 
init(s);
} else this.addEventListener(Event.ADDED_TO_STAGE,init)
которая по идее должна дожидаться инициализации

Старый 12.11.2011, 19:42
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 7  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Потому что иницализации не будет.

это кадры. А кадры зло.

Какой результат, если сделать текст одним кадром. Как на картинке выше?
__________________
adobe AS3 manual

Старый 12.11.2011, 19:49
noobuser вне форума Посмотреть профиль Отправить личное сообщение для noobuser Найти все сообщения от noobuser
  № 8  
Ответить с цитированием
noobuser
 
Аватар для noobuser

Регистрация: Oct 2011
Сообщений: 46
теперь он ругается Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".

Старый 12.11.2011, 19:55
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 9  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
а я надеюсь имя instance вы указали?

вообще, снова же. Разбираемся в догадках. Дайте код, там и посмотрим.
__________________
adobe AS3 manual

Старый 12.11.2011, 19:58
noobuser вне форума Посмотреть профиль Отправить личное сообщение для noobuser Найти все сообщения от noobuser
  № 10  
Ответить с цитированием
noobuser
 
Аватар для noobuser

Регистрация: Oct 2011
Сообщений: 46
да, указал.
Код AS3:
package  {
 
	import flash.display.SimpleButton;
	import flash.events.Event;
 
 
	public class btn extends SimpleButton {
 
		public function btn() {
 
		}
 
		public function setLabel(s:String){
			if (lbl) { 
				trace("существует");
				init(s);
				} else {
					trace("не сщуствует");
					this.addEventListener(Event.ADDED_TO_STAGE,init)
				}
		}
 
		function init(s:String):void {
			lbl.text=s;
		}
 
	}//end class
 
}
терзают сомнения по поводу this.addEventListener(Event.ADDED_TO_STAGE,init) тут не указывается аргумент функции. Как передать аргумент в данном случае?

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

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

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


 


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


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