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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.05.2009, 18:13
dedsky вне форума Посмотреть профиль Отправить личное сообщение для dedsky Найти все сообщения от dedsky
  № 1  
Ответить с цитированием
dedsky
[+6 16.03.11]
 
Аватар для dedsky

Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
По умолчанию почему неправильно backBtn.getChildByName("textBox").text = "text"

На сцене лежит кнопка backBtn, внутри этой кнопки тектовое поле textBox (все нарисовано вручную). Почему вызывает ошибку следующая строка:
Код AS3:
backBtn.getChildByName("textBox").text = "text";
Ошибка: обращение к возможно неопределенному методу getChildByName через ссылку со статическим типом flash.display: SimpleButton

Как мне изменить текст в поле?

Старый 05.05.2009, 18:24
PeSH вне форума Посмотреть профиль Отправить личное сообщение для PeSH Найти все сообщения от PeSH
  № 2  
Ответить с цитированием
PeSH

Регистрация: Apr 2009
Сообщений: 20
класс SimpleButton не наследуется от DisplayObjectContainer, поэтому у него нет такого метода, как getChildByName. А нельзя написать проще, например так

Код AS3:
backBtn['textBox'].text = 'text';

Старый 05.05.2009, 18:31
dedsky вне форума Посмотреть профиль Отправить личное сообщение для dedsky Найти все сообщения от dedsky
  № 3  
Ответить с цитированием
dedsky
[+6 16.03.11]
 
Аватар для dedsky

Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
ReferenceError: Error #1069: Property textBox not found on flash.display.SimpleButton and there is no default value.
at code::Rules$iinit()
at code::MainDocumentClass/showRules()
at code::TheGame/onRulesBtnClicked()

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

Регистрация: Sep 2002
Сообщений: 30,787
Не пользуйтесь SimpleButton

Старый 05.05.2009, 18:53
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 5  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код AS3:
(backBtn.getChildByName("textBox") as TextField).text = "text";
UPD: Не сработает для SimpleButton.
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 05.05.2009, 18:58
dedsky вне форума Посмотреть профиль Отправить личное сообщение для dedsky Найти все сообщения от dedsky
  № 6  
Ответить с цитированием
dedsky
[+6 16.03.11]
 
Аватар для dedsky

Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
Цитата:
Сообщение от __etc Посмотреть сообщение
Не пользуйтесь SimpleButton
я тогда должен повторить все стандартные поведения кнопки?

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

Регистрация: Apr 2009
Сообщений: 20
А использовать просто Button нельзя чтоли?

Добавлено через 1 минуту
Как вариант можно написать свой класс, который наследуется от SimpleButton, а уже в нем добавить свойство
public var textBox:TextField;

Вот так

Старый 05.05.2009, 19:47
dedsky вне форума Посмотреть профиль Отправить личное сообщение для dedsky Найти все сообщения от dedsky
  № 8  
Ответить с цитированием
dedsky
[+6 16.03.11]
 
Аватар для dedsky

Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
Оригинальный вариант подсказали:
Код AS3:
package code 
{
	import flash.display.*;
	import flash.events.MouseEvent;
	import flash.text.*;
	public class Rules extends Sprite
	{
 
		public function Rules() 
		{
			buttonText(backToGameBtn, "Back to the level ");
		}
 
		private function buttonText(simBtn:SimpleButton, strBtn:String):void
		{
			var txtArr:Array = [];
			txtArr[0] = (simBtn.upState as DisplayObjectContainer).getChildAt(1) as TextField;
			txtArr[1] = (simBtn.downState as DisplayObjectContainer).getChildAt(1) as TextField;
			txtArr[2] = (simBtn.overState as DisplayObjectContainer).getChildAt(1) as TextField;
			txtArr[0].text = txtArr[1].text = txtArr[2].text = strBtn;
		}
	}
 
}
Только все-равно по имени текстового поля обратиться не получается.

Старый 05.05.2009, 20:03
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 9  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Цитата:
Сообщение от dedsky Посмотреть сообщение
я тогда должен повторить все стандартные поведения кнопки?
Ага. Так даже лучше будет
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

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

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
Цитата:
Оригинальный вариант подсказали:
Код AS3:
txtArr[0] = (simBtn.upState as DisplayObjectContainer).getChildAt(1) as TextField;
Если в состояния кнопки добавить клипы или графику, то текстовое поле может уже и не быть на глубине 1

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

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

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


 


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


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