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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.03.2011, 22:41
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию работа с хиттестами и подводные камни

Никогда не приходилось работать плотно с hitTest тем более в АС3. Поэтому хочется спросить у вас пару вещей

1. hitTestObject

совершенно не понятно как работает. Вешаю на стейдж слушателя маусдавн и пишу

Код AS3:
if(!hitTestObject(someSprite)) trace('ok')
эффекта ноль

2. hitTestPoint . тут же ситуация наоборот

Код AS3:
if(!hitTestPoint(someSprite.mouseX, someSprite.mouseY)) trace('ok')
срабатывает всегда

Вообщем поясните ситуацию, и как с этим работать.

Почему возник такой вопрос. Ситуация такая. По нажатию на спрайт нужно его спрятать, и сделать определенное действие, а по нажатию на любое место сцены - только спрятать объект. Вот никак не могу это победить...

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

Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
Код AS3:
if(someSprite.hitTestPoint(mouseX, mouseY)) trace('ok')

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
И зачем тут hitTest? Повесить MOUSE_DOWN на stage, и смотреть во target/currentTarget, по какому элементу "тыкнули"
__________________
Я просто добрый шутник.

Старый 10.03.2011, 22:58
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
cr0w312 срабатывает всегда! так что проблема пока висит

scarbo покажите примерчик )) даже интересно стало

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Цитата:
По нажатию на спрайт нужно его спрятать, и сделать определенное действие, а по нажатию на любое место сцены - только спрятать объект.
Вот это разъясните сначала, потом примерчик. про спрайт понятно, про объект - нет.
__________________
Я просто добрый шутник.

Старый 10.03.2011, 23:03
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Да криво написал вы правы. По нажатию на спрайт нужно его спрятать, и сделать определенное действие, а по нажатию на любое место сцены - только спрятать этот самый спрайт.

Добавлено через 8 минут
решил хиттестпойнтом. всем спасибо

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

Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
Цитата:
Сообщение от in4core Посмотреть сообщение
cr0w312 срабатывает всегда! так что проблема пока висит
Либо у вас спрайт размером в стэйдж либо внимательнее смотрите к чему применяете hitTestPoint

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Цитата:
решил хиттестпойнтом. всем спасибо
и зря
Main.as
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	/**
	 * ...
	 * @author Scarbo
	 */
	public class Main extends Sprite 
	{
		private var _current:Square;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			_current = new Square();
			_current.x = _current.y = 50;
			addChild(_current);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, _mouseDownHandler);
		}
 
		private function _mouseDownHandler(e:MouseEvent):void {
			if (e.target is Square) {
				_current.visible = false;
			}else {
				_current.visible = true;
			}
		}
	}
 
}
Square.as
Код AS3:
package  
{
	import flash.display.Graphics;
	import flash.display.Sprite;
 
	/**
	 * ...
	 * @author Scarbo
	 */
	public class Square extends Sprite 
	{
 
		public function Square() 
		{
			super();
			this._draw();
		}
 
		private function _draw(s:Number = 100, c:uint = 0xff0000):void {
			var g:Graphics = this.graphics;
			g.clear();
			g.beginFill(c);
			g.drawRect(0, 0, s, s);
			g.endFill();
		}
 
	}
 
}
__________________
Я просто добрый шутник.

Старый 10.03.2011, 23:30
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
scarbo кстати спасибо. А вот именно за то, что я уже и забыл что Stage является так же контейнером.... и у него e.target не является Object Stage !!!!


Последний раз редактировалось in4core; 10.03.2011 в 23:34.
Старый 10.03.2011, 23:56
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 10  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Цитата:
e.target не является
хм, да вообще-то не только у stage так, добавьте детей любому контейнеру, тоже самое будет (если только mouseChildren=false не выставить)
__________________
Я просто добрый шутник.

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

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

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


 


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


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