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

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

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

Регистрация: Nov 2007
Сообщений: 84
По умолчанию Как переданный String конструктору увидеть в слушателе?

Код:
package 
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.net.navigateToURL;
	import flash.net.URLRequest;

	public class UrlButton extends Sprite
	{

		public function UrlButton (my_x:Number, my_y:Number, w:Number, h:Number, s:String):void
		{
			this.graphics.beginFill (0x00ff00);
			this.graphics.moveTo (my_x,my_y);
			this.graphics.lineTo (my_x + w,my_y);
			this.graphics.lineTo (my_x + w,my_y + h);
			this.graphics.lineTo (my_x,my_y + h);
			this.graphics.lineTo (my_x,my_y);
			this.graphics.endFill ();
			this.alpha = 0;
			
			this.addEventListener (MouseEvent.MOUSE_UP, myUrlButtonMouseUpHandler);
		}
		
		function myUrlButtonMouseUpHandler (event:MouseEvent):void
		{
			var url:URLRequest = new URLRequest(s);			
			navigateToURL (url, "_self");
		}
	}
}
Этот код неправильный. Из-за второго красного s. Но как в слушателе увидеть переданный String?

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

Регистрация: Sep 2002
Сообщений: 30,787
Вы знаете, что такое свойства (поля) класса?

Старый 11.12.2007, 22:46
Thanx7 вне форума Посмотреть профиль Отправить личное сообщение для Thanx7 Найти все сообщения от Thanx7
  № 3  
Ответить с цитированием
Thanx7

Регистрация: Nov 2007
Сообщений: 84
Нет, ещё не практиковал. Спасибо, буду разбираться.

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

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

Старый 12.12.2007, 13:30
Thanx7 вне форума Посмотреть профиль Отправить личное сообщение для Thanx7 Найти все сообщения от Thanx7
  № 5  
Ответить с цитированием
Thanx7

Регистрация: Nov 2007
Сообщений: 84
Разобрался. Спасибо, что указали, где искать решение.

В коде класса (Этот класс называется подклассом?), передающего стринг, добавил строчку, выделенную красным:

Код:
var my_url:UrlButton = new UrlButton(580, 0, 720, 250);
my_url.link = "http://site.ru/";
И даже сделал трассировку:

Код:
trace("classProperty" in my_url);
trace("link" in my_url);
Возвращающую результат:

Код:
false
true
В коде класса (Этот класс называется суперклассом?), принимающего стринг, добавил строчку, выделенную красным:

Код:
public class UrlButton extends Sprite
{
        	public var link:String;
		
	public function UrlButton (my_x:Number, my_y:Number, w:Number, h:Number):void
	{

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

Регистрация: Sep 2002
Сообщений: 30,787
Подклассы и суперклассы — совсем иные вещи.

А ссылку можно было передать через конструктор, а свойство сделать приватным (а зачем светить ссылку наружу?).

Старый 12.12.2007, 15:24
Thanx7 вне форума Посмотреть профиль Отправить личное сообщение для Thanx7 Найти все сообщения от Thanx7
  № 7  
Ответить с цитированием
Thanx7

Регистрация: Nov 2007
Сообщений: 84
Свойство, да, сделал приватным.

А как это в конструктор? Как может функция класса UrlButton:

Код:
		function myUrlButtonMouseUpHandler (event:MouseEvent):void
		{
			var url:URLRequest = new URLRequest(link);			
			navigateToURL (url, "_self");
		}
увидеть то, что хотя и передано в конструктор, но отсутствует здесь (красное многоточие):

Код:
	public class UrlButton extends Sprite
	{
                ... //private var link:String;
		
		public function UrlButton (my_x:Number, my_y:Number, w:Number, h:Number):void
		{
Разве достаточно описать переменную в функции конструктора, а не на уровне класса, и её увидят все другие функции класса?

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

Регистрация: Sep 2002
Сообщений: 30,787
Добавить новый параметр url в функции конструктора и присваивать значение свойству в самой функции конструктора, а не извне.

Старый 12.12.2007, 16:11
Thanx7 вне форума Посмотреть профиль Отправить личное сообщение для Thanx7 Найти все сообщения от Thanx7
  № 9  
Ответить с цитированием
Thanx7

Регистрация: Nov 2007
Сообщений: 84
Получилось. Спасибо:

Код:
public class UrlButton extends Sprite
{
        private var link:String;
		
	public function UrlButton (my_x:Number, my_y:Number, w:Number, h:Number, url:String):void
	{
		this.link = url;

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

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

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

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

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


 


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


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