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

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

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

Регистрация: Oct 2009
Сообщений: 72
По умолчанию MovieClip, текст и Event

Привет всем! У меня возникла задача реализовать во флеше следующее:
нарисовать текст(полученный из XML) по координатам, тоже полученным из XML. И этому тексту прикрепить событие клика мышью.
Собственно, вопрос, как это реализовать? Я с флешем на "Вы" и поэтому метод тыка плохо помогает.
Но мне кажется, что надо что-то типа этого:
Код AS3:
var xmlText:movieClip = new MovieClip;
xmlText.graphics.drawText(tempXML.@x, tempXML.@y, tempXML.@text) ???
xmlText.addEventListener(MOUSE.CLICK, clickListener);
parentObj.addChild(xmlText);
Но каким методом нарисовать текст по заданным координатам, и главный вопрос: как должна примерно выглядеть функция обработчика клика(интересует, какой параметр и какого типа ей передавать) и как присвоить нарисованному тексту какой-нибудь идентификатор, чтобы в функции-обработчике можно было посмотреть, какой именно текст её вызвал.

И наверно я не тот аргумент события передаю addEventListener, да?

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

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Код AS3:
var xmlText:TextField = new TextField();
xmlText.x = tempXML.@x;
xmlText.y = tempXML.@y;
xmlText.text = tempXML.@text;
xmlText.addEventListener(MouseEvent.CLICK, clickHandler);
parentObj.addChild(xmlText);
__________________
я могу стать всем, если только захочу

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

Регистрация: Oct 2009
Сообщений: 72
Класс! Спасибо большое!
Но остается вопрос в том, как отлавливать, с какого текста пришел клик.
Код AS3:
public function clickHandler(event:MouseEvent){
Вот тут хочется узнать, откуда клик пришел
}
Мои мысли на этот счет- может быть стоит как-то присвоить каждому создаваемому TextField`y что-нибудь типа id... Тогда как его просмотреть из функции обработчика? Во флексе я узнавал это с помощью "event.currentTarget.id"
А тут как?

Добавлено через 3 минуты
так, потыкался, узнаю прямо текст. Неудобно, но все-же лучше чем ничего
Но потенциальная проблема - присвоить событие клика не текстовому полю, а, допустим, MovieClip. Надо же его как-то идентифицировать? Прошу вашего совета


Последний раз редактировалось _SoWa; 28.10.2009 в 19:05.
Старый 28.10.2009, 19:05
Kidd002 вне форума Посмотреть профиль Отправить личное сообщение для Kidd002 Посетить домашнюю страницу Kidd002 Найти все сообщения от Kidd002
  № 4  
Ответить с цитированием
Kidd002

Регистрация: Apr 2004
Адрес: Россия, Москва
Сообщений: 60
Отправить сообщение для Kidd002 с помощью ICQ
Код AS3:
public function clickHandler(event:MouseEvent){
       trace(event.target);// - то, на что кликнули
}

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

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Код AS3:
public class SuperTextField extends TextField
{
	private var _id:int;
	public function SuperTextField()
	{
		super();
	}
	public function get id():int
	{
		return _id;
	}
	public function set id(value:int):void
	{
		_id = value;
	}
}
__________________
я могу стать всем, если только захочу

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

Регистрация: Oct 2009
Сообщений: 72
Цитата:
Сообщение от Kidd002 Посмотреть сообщение
Код AS3:
public function clickHandler(event:MouseEvent){
       trace(event.target);// - то, на что кликнули
}
ну вот есть у меня в библиотеке MovieClip называемый ePoint.
И я их, скажем, 50 штук добавляю... Идентифицируется? будет выдавать [object ePoint]

Добавлено через 9 минут
Я туплю
Код AS3:
var xmlText:SuperTextField = new SuperTextField();
Так объявлять?

И по-моему пробелы лишние "set id" "get id", я правильно заметил?

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

Регистрация: May 2009
Сообщений: 220
Цитата:
Сообщение от _SoWa Посмотреть сообщение
И по-моему пробелы лишние "set id" "get id", я правильно заметил?
не лишние - это get/set методы, они своей сутью имитируют работу с переменной.
Т.е. в коде вместо традиционного вызова функции:
Код AS3:
var myVar:int = xmlText.getId();
пишем так:
Код AS3:
var myVar:int = xmlText.id
или так:
Код AS3:
xmlText.id = 1234;
Который из двух методов должен вызваться (get или set) в каждом конкретном случае определяется из контекста автоматически. Но если работать с этими методами как с переменной - не запутаетесь.

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

Регистрация: Oct 2009
Сообщений: 72
Аха, вот оно как. Ясно, спасибо!
Но возникла проблема с добавлением этого нового класса:
Ошибка 1131: Classes must not be nested.

Добавлено через 5 минут
И такая-же ошибка при попытке создать расширенный класс от моего ePoint...
/************************************/
Разобрался, я сам дурак
Класс в классе объявляю

Но все равно, весь код в as файле заключен в package main {
И не позволяет мне описать еще парочку public классов ...


Последний раз редактировалось _SoWa; 28.10.2009 в 20:16.
Старый 28.10.2009, 20:28
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 9  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Цитата:
Но все равно, весь код в as файле заключен в package main {
я просто не написал
Цитата:
И не позволяет мне описать еще парочку public классов ...
1 файл - 1 класс
__________________
я могу стать всем, если только захочу

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

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

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


 


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


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