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

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

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

Регистрация: Apr 2010
Сообщений: 13
Question Неверный размер объекта при создании экземпляра

Здраствуйте уважаемые флешеры! Поясните пожалуйста, в чем проблема.
Я описал класс module.as, в котором я отрисовываю картинку pic.png, размер которой 32х32. В основном классе Main.as, при создании экземпляра класса module.as размеры данного объекта равны 101. Проблема в том что я ставлю на этот объект событие OVER и OUT, которые должны срабатывать при попадании курсора мыши на картинку(размер которой 32), а события эти срабатыват когда курсор еще не вошел на картинку. Это важно потому что таких объектов будет несколько и стоять они будут рядом, тогда получается что последний добавленный объект будет закрывать предыдущий.
Если я пытаюсь изминить размер данного объекта на 32х32, то в этом случае искажается картинка (она ужимается). А это очень не хорошо =(.

Подскажите как решить проблему?

скрипт Module.as

Код AS3:
package modelObjects
 
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.display.Bitmap;
	import flash.media.Sound;
 
	public class Module extends MovieClip
	{
		[Embed (source = "../images/pic.png")] [Bindable] public var Img:Class;
 
		public function Module(type:String)
		{
			var pic:Bitmap;
			pic = new Img(); 
			this.addChild(pic);
			this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
			this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
		}
 
		private function mouseOverHandler(e:MouseEvent):void 
		{	
			trace("IN");
		}
 
		private function mouseOutHandler(e:MouseEvent):void 
		{	
			trace("OUT");
		}
	}
}
основной скрипт Main.as

Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import modelObjects.Module;
 
	public class Main extends MovieClip 
	{
		public var mdl:Module; //объект игра
 
		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
			mdl = new Module();
                        mdl.x = 300;
                        mdl.y = 300;
			this.addChild(mdl);
		}
	}
}


Последний раз редактировалось C0ffe1n; 30.07.2010 в 14:33.
Старый 30.07.2010, 14:47
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 C0ffe1n:
Цитата:
В основном классе Main.as, при создании экземпляра класса module.as размеры данного объекта равны 101.
Картинка точно-точно 32х32, а trace выдаёт 101?
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

Старый 30.07.2010, 14:51
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
ты конечно разберись, что за фигня, но пока, может, просто повесишь обработчики мыша не на мувик, содержащий Bitmap, а на сам Bitmap?
__________________
Поймай яблоко 2!

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
@Zebestov
Класс Bitmap не является InteractiveObject (иначе говоря, не реагирует на пользовательские события ввода)
__________________
...вселенская грусть

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

Регистрация: Apr 2010
Сообщений: 13
Хемуль
да картинка точно 32х32
а если к примеру напишу в main.as
Код AS3:
trace(mdl.width)
то выдает 101. При чем я проверял, размер 101 у всех создаваемых объектов (я так понимаю что размер 101х101 определяется по умолчанию)
Если добавить трайсе в Module.as
Код AS3:
trace(pic.width)
то выводит значение 32.

Zebestov
Может быть это и выход, надо пробывать, но все же это концептуальная проблема.

P.S. Я использую FlashDevelop и Flex SDK

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Ну по-быстрому тогда можно оверрайдить
Код AS3:
override public function get width():Number {
return this._pic.width;
}
__________________
...вселенская грусть

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

Регистрация: Apr 2008
Сообщений: 79
у меня все ок, тут ошибка
Код AS3:
public function Module(type:String)
уж тогда так
Код AS3:
public function Module(type:String=null)
ну или передавать параметр type

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

Регистрация: Apr 2010
Сообщений: 13
gloomyBrain
чет не понял тебя, переведи

PgeorgyV
а ты попробуй наводить курсор мышки на картинку рядом (справа или снизу), и ты увидешь что обработчик события OVER и OUT все равно срабатывают

Старый 30.07.2010, 15:38
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 9  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
@Zebestov
Класс Bitmap не является InteractiveObject (иначе говоря, не реагирует на пользовательские события ввода)
точно.
__________________
Поймай яблоко 2!

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

Регистрация: Apr 2008
Сообщений: 79
Цитата:
Сообщение от C0ffe1n Посмотреть сообщение
а ты попробуй наводить курсор мышки на картинку рядом (справа или снизу), и ты увидешь что обработчик события OVER и OUT все равно срабатывают
Ну я как бы попробовал, sdk 4.1.0.16076 + у нас разные картинки, может заюзать какую-нить другую?

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

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

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


 


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


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