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

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

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

Регистрация: Aug 2013
Сообщений: 89
Attention Как преобразовать event.target в глобальную переменную

Здравствуйте.
Можно ли преобразовать переменную event.target в глобальную переменную.
Уточню, в пределах funct1 {} можно манипулировать с event.target:

Код AS3:
stage.addEventListener(MouseEvent.CLICK,funct1);
function funct1(event:MouseEvent):void
{
    //здесь можно манипулировать с event.target 
} 
 
// а здесь уже нельзя  манипулировать с event.target!
Как преобразовать event.target в глобальную переменную, чтобы к ней можно было обращаться из любого места кода?


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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 27.08.2013, 21:32
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 3  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
А что вы хотите сделать с этим обьектом?
Для чего Вам это понадобилось?

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

Регистрация: Feb 2012
Сообщений: 1,540
Главный вопрос: зачем?
Ну да ладно:
Код AS3:
var lastTarget:Object;
stage.addEventListener(MouseEvent.CLICK,funct1);
function funct1(event:MouseEvent):void
{
    lastTarget = event.target;
}
До клика эта переменная будет равняться null.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
До клика эта переменная будет равняться null.
Код AS3:
var lastTarget:Object = "а хрен его знает";
Добавлено через 4 минуты
Весь код, написанный в кадре, будет собран в конструктор (кроме функций, разумеется, включая обработчики). Когда этот код выполнится, объект будет создан и ТОЛЬКО ПОСЛЕ ЭТОГО может появиться на экране. И больше он не будет выполняться, это ж конструктор)) Так что все, что в коде в кадре делается с lastTarget, делается ТОЛЬКО с первоначальной инициализацией. Так что нет. Нельзя просто так взять и.
__________________
Reality.getBounds(this);

Старый 28.08.2013, 00:39
UserSuperPupsik вне форума Посмотреть профиль Отправить личное сообщение для UserSuperPupsik Найти все сообщения от UserSuperPupsik
  № 6  
Ответить с цитированием
UserSuperPupsik

Регистрация: Aug 2013
Сообщений: 89
Ребят всё работает, я получил то, что хотел!!!
Код AS3:
var T:Object;
var s1:S1=new S1();// S1 - класс символа
s1.x=50;
s1.y=50;
addChild(s1);
 
var s2:S1=new S1();// S1 - класс символа
s2.x=150;
s2.y=150;
addChild(s2);
 
stage.addEventListener(MouseEvent.CLICK,funct1);
function funct1(event:MouseEvent):void
										{
										T = event.target;
										T.startDrag();
										f1();
										}
 
function f1 ():void{
	                if(T.x>=300 || T.y>=300) {
						                      T.stopDrag();
											  }
 
					}
Благодарю Вас, друзья, теперь мой код будет выглядеть более красиво, а то все функции приходилось пихать в функцию события( function funct1(event:MouseEvent):void {//вот прямо сюда} ) .
Уважаемый, Wolsh, может быть я что-то не понял?!?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Уважаемый, Wolsh, может быть я что-то не понял?!?
Вы не видите разницу между первым своим кодом и вторым? Во втором f1 вызывается ИЗ обработчика, когда переменная уже инициализирована в обработчике. В первом коде у Вас нет никакой второй функции, есть комментарий "//не работает тут", расположенный в коде, который попадет в конструктор.
Да почитайте уже хоть что-нибудь. Методом тыка Вы 10 лет будете "изучать" язык, а ямы под фундаментом так и останутся.
__________________
Reality.getBounds(this);

Старый 28.08.2013, 01:01
UserSuperPupsik вне форума Посмотреть профиль Отправить личное сообщение для UserSuperPupsik Найти все сообщения от UserSuperPupsik
  № 8  
Ответить с цитированием
UserSuperPupsik

Регистрация: Aug 2013
Сообщений: 89
Вот более полезный код, в котором всё работает!!!

Код AS3:
var raz:Boolean=false
 
var T:Object;
var s1:S1=new S1();// S1 - класс символа
s1.x=50;
s1.y=50;
addChild(s1);
 
var s2:S1=new S1();// S1 - класс символа
s2.x=150;
s2.y=150;
addChild(s2);
 
stage.addEventListener(MouseEvent.CLICK,funct1);
function funct1(event:MouseEvent):void
										{
										T = event.target;
										if (raz==false){
 
 
										T.startDrag();
										raz=true;
										f1();
										                 }
										else if (raz==true){
										//T = event.target;
 
										T.stopDrag();
										raz=false;
										f1();
 
										                   }
 
										}
 
function f1 ():void{
	               trace("T.y:",T.y);
				   trace("T.x:",T.x);
					// здесь может быть большой код!
 
					}
Добавлено через 2 минуты
Спасибо, Wolsh, я всё понял!!!

Старый 28.08.2013, 01:05
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 9  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Да почитайте уже хоть что-нибудь.
и не пугайте людей своим "красивым кодом"
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Можно было сделать и без "глобальной" (старайтесь не использовать красивые слова, смысл которых еще не понимаете) переменной.
Код AS3:
function funct1(event:MouseEvent):void
{
	var target:Sprite = event.target as Sprite;
	target.startDrag();
	f1(target);
}
 
function f1 (dragged:Sprite):void
{
	if(dragged.x>=300 || dragged.y>=300) 
	{
		dragged.stopDrag();
	}
}
Добавлено через 7 минут
Цитата:
if (raz==false)
Выражение в скобках после оператора if после вычисления возвращает тип Boolean (то есть либо true, либо false). Если у Вас переменная raz УЖЕ имеет тип Boolean, нет никакого смысла делать еще одну проверку "а точно ли это true или false". Достаточно просто if(raz) или if(!raz).
__________________
Reality.getBounds(this);

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

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

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


 


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


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