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

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

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

Регистрация: Aug 2013
Адрес: Москва
Сообщений: 59
По умолчанию Во Flex sdk не работает MouseEvent.MOUSE_DOWN

Здавствуйте! Во Flex не срабатывает событие MOUSE_DOWN. Точнее, когда запускаю проект, то никаких ошибок не вылазит, и всё успешно запускается; но приложение ну совсем никак не реагирует на клик мышкой.
У меня есть объект M, который добавляет объект S: stage.addChild(S). M же графики никакой не содержит. Вот что находится внутри S:
Код AS3:
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
 
public dynamic class S extends Sprite
	{
 
		public function S() {
			graphics.drawRect(0, 0, 1080, 780);
			addEventListener(Event.ADDED_TO_STAGE, onAddStage);
		}
 
		private function onAddStage(e:Event):void {
			addEventListener(MouseEvent.MOUSE_DOWN, startDr);
			trace(parent);
		}
 
		private function startDr(e:MouseEvent):void {
			trace("!!!!!!!!!!!!!!!!!!!!!!!!!");
			var r:Shape = new Shape();
			r.x = 350;
			r.y = 250;
			r.graphics.beginFill(0x33FF33);
			r.graphics.drawRect(0, 0, 100, 100);
			r.graphics.endFill();
			addChild(r);
			startDrag();
		}
 
	}
И, когда нажимаю кнопкой мыши на экране приложения, ничего не происходит. Если же добавлять слушателя Stage, то всё работает:
Код AS3:
stage.addEventListener(MouseEvent.MOUSE_DOWN, startDr);
. Но мне вот нужно сделать не через Stage. Помогите, пожалуйста, добрым советом! Спасибо

Старый 02.10.2013, 15:31
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 2  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Код AS3:
public function S() {
graphics.beginFill(0xff0000); //вот это добавьте -это определяет заливку, graphics.lineStyle(..) определяет контур
			graphics.drawRect(0, 0, 1080, 780);
			addEventListener(Event.ADDED_TO_STAGE, onAddStage);
		}
Вас не удивило что вы не видите на экране того прямоугольника что вы нарисовали ?
Он у вас без заливки и контура, соответственно по нему вы не кликните.
__________________
Oomph

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

Регистрация: Aug 2013
Адрес: Москва
Сообщений: 59
Да точно, тупанул... Прошу прощения за такой глупый вопрос!

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

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Но мне вот нужно сделать не через Stage.
Цитата:
У меня есть объект M, который добавляет объект S: stage.addChild(S).
На самом деле вешать слушателя на стейдж - это хорошо ЭТО ПЛОХО!!!!, а вот добавлять stage.addChild(S) - это плохо.


Последний раз редактировалось Akopalipsis; 03.10.2013 в 00:01.
Старый 02.10.2013, 16:00
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 5  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Цитата:
На самом деле вешать слушателя на стейдж - это хорошо
Слушателя клика мыши?
Вот будет здорово если я вместо того, чтобы повесить слушатели на кнопки, повешу их на стейдж))

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

Регистрация: Mar 2013
Сообщений: 1,864
я хотел сказать, что на стейдж вешать слушателей более приемлемо, чем добавлять на неё обьекты.
Цитата:
Вот будет здорово если я вместо того, чтобы повесить слушатели на кнопки, повешу их на стейдж))
А что такого страшного может произойти? я просто правда не знаю, расскажите, а то может и в правду нельзя...

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

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Цитата:
я хотел сказать, что на стейдж вешать слушателей более приемлемо, чем добавлять на неё обьекты.
Я воспринимаю это так - "Я не могу добавить на стейдж объект, поэтому лучше добавлю туда слушатель."
"Я не могу пройти по соседскому газону, поэтому лучше поставлю туда тумбочку"

Цитата:
А что такого страшного может произойти? я просто правда не знаю, расскажите, а то может и в правду нельзя...
Ну есть у вас кнопка, вам нужно отследить нажатие на эту кнопку и выполнить какой - то код) А вы вместо того, чтобы отслеживать нажатие на кнопку, отслеживаете нажатие на весь экран.

Представте что у вас есть кнопка "закрыть приложение", а срабатывает она при нажатии на любую область экрана. Я бы сошел с ума от такой программы)

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

Регистрация: Mar 2013
Сообщений: 1,864
А если есть десять кнопок, то лучше десять слушателей или один слушатель на стедж?
Или если нужно вообще весь экран отслеживать на клик? Вот вообще весь, то так всё равно нельзя?

Добавлено через 7 минут
Цитата:
Я воспринимаю это так - "Я не могу добавить на стейдж объект, поэтому лучше добавлю туда слушатель."
Этими словами Вы приравняли добавить на стейдж обьект с добавить на стейдж слушатель.
я точно знаю, что добавлять на стейдж обьекты - нельзя! Недавно столкнулся с проблемой, на которую мне посоветовали повесить слушателя на стейдж. По Вашему это медвежий совет? Или слушать клавиатуру со стейджа === добавить десять классов на стейдж ?

Старый 02.10.2013, 17:52
Ioangum вне форума Посмотреть профиль Отправить личное сообщение для Ioangum Найти все сообщения от Ioangum
  № 9  
Ответить с цитированием
Ioangum

Регистрация: Aug 2013
Адрес: Москва
Сообщений: 59
А почему добавлять объекты на стейдж плохо? Чем это черевато-то?

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Akopalipsis на стейдж лучше вешать события MOUSE_MOVE, MOUSE_UP. И то не всегда. Всё если у Вас 10 кнопкок, то лучше создать контейнер и вешать на него события MOUSE_DOWN, etc...

Ioangum
Цитата:
А почему добавлять объекты на стейдж плохо? Чем это черевато-то?
Плохо в минимальном понимании инкапсуляцией. То-есть тем что у Вас объект стает доступным из любого места программы. Более правильно я считаю использовать DisplayObjectConteiner и в него рисовать графику.
__________________
return this...

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

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

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


 


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


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