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

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

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

Регистрация: Dec 2009
Сообщений: 48
По умолчанию Обращение к символу из класса

Господа, возникла очередная трудность с восприятием ООП AS3. Не совсем понятно, как можно обратится из класса к символу и применить к нему какие-либо действия. В хелпе прочитал, что для того, чтобы изменять данные - класс должен быть динамическим и что должен наследовать один из классов Sprite или MovieClip. Итак, пытаюсь...

Код AS3:
package lib
{
	import flash.display.Sprite;
 
	dynamic public class myTest extends Sprite 
	{
		function myTest (Name:String, type:String):bool
		{
trace("construct run");			
trace(this[Name].text);
		}
	}
}
При вызове из первого фрейма:
Код AS3:
import lib.myTest;
var a:myTest = myTest("inp", "phone");
Вывод ошибку "1120: Access of undefined property inp." Что я делаю не так =(? Где вообще можно поглядеть информацию о структуре документа flash и о области видимости классов/функций/символов?

P.s. И еще, почему нельзя создавать экземпляр класс mainclass (который грузится самым первым). Спасибо.

Старый 30.12.2009, 15:39
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
У вас нет объекта, свойства или метода inp. Учитывая что вы пытаетесь вызвать метод или свойство text у объекта по ссылке inp, вы получаете ошибку. Если вы пытались трейсить строку "inp", надо было написать:
Код AS3:
trace(Name);
У класса String нет свойства или метода text.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
package lib
{
	import flash.display.Sprite;
 
	public dynamic class MyTest extends Sprite 
	{
		function MyTest(name:String, type:String)
		{
			super();
			trace("construct run");			
			trace(this[name].text);
		}
	}
}
Вот так для начала должен был выглядеть ваш класс.
Непонятно несколько вещей:
- зачем делать его динамическим.
- что вы ожидаете увидеть во втором трейсе - переменной по имени inp в этом классес просто нет.
__________________
Hell is the possibility of sanity

Старый 30.12.2009, 16:05
mexoboy вне форума Посмотреть профиль Отправить личное сообщение для mexoboy Найти все сообщения от mexoboy
  № 4  
Ответить с цитированием
mexoboy

Регистрация: Dec 2009
Сообщений: 48
Пардон, что не описал ситуацию подробнее... В root на первом кадре имеется input с instance name = inp. По действию, определенному из mainclass передается имя инпута и его тип в класс MyTest. Все что мне нужно, получить возможность прочесть и перезаписать значения инпут поля с именем inp.

Динамический, т.к. в моем классе помимо этого будут иметься настройки - а в данном случае я так понимаю необходимо как раз приписку dynamic делать - поправьте, если это не так.

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
dynamic даёт вам право объявлять переменные, без объявления их явно.

Старый 21.10.2012, 04:35
Шурик_2 вне форума Посмотреть профиль Отправить личное сообщение для Шурик_2 Найти все сообщения от Шурик_2
  № 6  
Ответить с цитированием
Шурик_2
 
Аватар для Шурик_2

Регистрация: Dec 2007
Сообщений: 73
Отправить сообщение для Шурик_2 с помощью ICQ Отправить сообщение для Шурик_2 с помощью Skype™
Вот код, который объявляет слушателей клавиатуры и двигает movieclip mcClip
Bally.as
Код AS3:
package com.person
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import flash.display.Stage;
 
	public class Bally extends MovieClip
	{
 
		public function Bally()
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN, up);
			stage.addEventListener(KeyboardEvent.KEY_UP, cooling);
			addEventListener(Event.ENTER_FRAME, onEF);
			var upObject:Boolean;
 
 
			function up(e:KeyboardEvent)
			{
				if (e.keyCode == Keyboard.UP)
				{
					upObject = true;
				}
			}
 
			function cooling(e:KeyboardEvent)
			{
				if (e.keyCode == Keyboard.UP)
				{
					upObject = false;
				}
			}
			function onEF(e:Event)
			{
				if (upObject)
				{
					this.y -=  20;
					trace("up!");
				}
				else
				{
					this.y -=  20;
					trace("down");
				}
			}
 
		}
 
	}
}
MovieClip экспортирован в AS:

В библиотеке выглядит так:

Добавлен на рабочий стол:

Трейсы в аутпате отражаются, а мувик с места не двигается. Что я не учёл? Почему this не передаёт параметр y мувику?

Старый 21.10.2012, 07:04
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 7  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
в поле класс надо писать com.person.Bally
базовый класс оставляем пустой
нэйм Bally

Добавлено через 4 минуты
Цитата:
Добавлен на рабочий стол:
этого делать не надо,
если вы переносите мувиклип на сцену из библиотеки, вы таким образом создаете экземпляр класса Bally, но обращаться к нему не можете, так как
не задали Instance name.
Экземпляр нужно создавать так:
Код AS3:
var bally:Bally = new Bally();


Последний раз редактировалось Isfet; 21.10.2012 в 07:15.
Старый 21.10.2012, 13:56
Шурик_2 вне форума Посмотреть профиль Отправить личное сообщение для Шурик_2 Найти все сообщения от Шурик_2
  № 8  
Ответить с цитированием
Шурик_2
 
Аватар для Шурик_2

Регистрация: Dec 2007
Сообщений: 73
Отправить сообщение для Шурик_2 с помощью ICQ Отправить сообщение для Шурик_2 с помощью Skype™
По вашему что-то не получается.
В этом видео у него всё получилось. Просмотреть
Он нарисовал прямоугольник, сделал его символом, импортировал его в actionscript. В качестве базового класса указал свой класс. Мувик вёл себя как прописано было в классе (this.scaleX при наведении курсора).


Последний раз редактировалось Шурик_2; 21.10.2012 в 14:20.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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