![]() |
|
||||||||||
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Так Вам нужно?
package{ import flash.events.MouseEvent; import flash.text.TextField; import flash.display.Sprite; import flash.display.Shape; public class Main extends Sprite { private var _rect:Shape; private var _container:Sprite; private var _textField:TextField; public function Main( ){ _container = new Sprite( ); _container.addEventListener( MouseEvent.MOUSE_OVER, container_mouseOverHandler ); _container.addEventListener( MouseEvent.MOUSE_OUT, container_mouseOutHandler ); super.addChild( _container ); _rect = new Shape( ); _rect.graphics.beginFill( 0x232323 ); _rect.graphics.drawRect( 0, 0, 70, 45 ); _rect.graphics.endFill( ); _rect.x = _rect.y = 100; _container.addChild( _rect ); _textField = new TextField( ); _textField.width = 150 super.addChild( _textField ); } private function container_mouseOverHandler( event: MouseEvent ):void { _textField.text = event.type as _container.addEventListener( MouseEvent.MOUSE_MOVE, container_mouseMoveHandler ); } private function container_mouseOutHandler( event: MouseEvent ):void { _textField.text = event.type as String; _container.removeEventListener( MouseEvent.MOUSE_MOVE, container_mouseMoveHandler ); } private function container_mouseMoveHandler( event: MouseEvent ):void { _textField.text = String( event.type ) + '(' + String( event.stageX ) + ', ' + String( event.stageY ) + ' )'; } } } |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 15
|
Цитата:
Попытался снова вникнуть в это. Бегал из стороны в сторону и вообще запутался. Вопросы: 1. Если написано так(выполнение одного метода!), то реально что функция "my_func" вызывается когда событие MOUSE_HOVER срабатывает? Событие срабатывает когда условие, вставленное в класс MouseHover, выполняется. 2. Если реально, то как в классе MouseHover получить ссылку на объект, для которого собственно это событие и было запущено. Я был нацелен сделать событие, которое будет добавляться объекту в 1 строку, так же как это делается со встроенными классами. Пришел к выводу что это не реально. Запутался вообще. Развейте мои сомнения. Везде в примерах событие добавляется внутри классов, где и обрабатывается его вызов. Получается для добавления такого события код будет иметь такой вид: . Я так не хочу, это уже не то. Это уже не имеет особого смысла вообще. |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Я всегда говорю то, что думаю и пусть даже иногда забегаю вперед и часто допускаю ошибки вызванные ложными
догадками и мне все равно... Но я теряюсь в словах при выборе на ответ Вам. Если коротко, то Вам пока рано делать задуманное. Вам не недельку нужно flash погонять, Вам нужно всерьез подойти к делу и прочесть книгу Колин Мук as3. Вопросов у Вас после этого не уменьшиться, но так Вы хотя бы встанете на верный путь. Сказать вам, что мне не сложно это сделать и взять и сделать, я не могу. Простой пример можно сделать за несколько минут, но потом вы скажете, а что-то у меня это событие с картинками неправильной формы и прозрачностью не работает и .... А чтобы не было ... Нужно потратить немало времени на геометрию и прочее. Хотя если забить на производительность и все hitTest делать... Но я все равно не буду делать это. И повторю ещё раз, то что Вы написали, говорит о том, что Вам нужно пересказать книгу, а потом ещё несколько месяцев учить Вас индивидуально, а это сами понимаете, никому не нужно, так как Вы не знаете самых-самых основ. |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 15
|
Я понял. Но меня не интересует геометрия и рисунки, т.к. объекты это картинки. Но это ладно.
Пожалуйста, ответьте на вопрос №1. Просто если это нереально, то я не буду мучиться с событиями, а сделаю по другому. Не знание некоторых моментов не мешает мне делать сайт с хорошо организованной логикой кода. На любые вопросы дает ответ справка. Но тут с событиями вообще каша. Но если ответ на вопрос под №1 - "нереально", то и каша превращается в тарелочку со вкусным мясом. |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Реально. Только именно это и сделает из Вашего мозга месиво.
Вы либо забьете, либо на год в учение уйдете... Добавлено через 40 секунд Это конечно если Ваш первый вопрос считается Цитата:
Добавлено через 7 минут И ещё один момент, Вы возможно неправильно что-то представляете. Я раз видел человека идущего в через туман, как пройти сквозь бетонную стену? Понимаете? |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 15
|
Спасибо, я понял. Буду копать
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Hobey, просто у Вас некоторый недостаток понимания самих концепций, как что работает вцелом, и этого Справочник не исправит, к сожалению.
В своих первых постах Вы хотели заставить флэш-плеер как приложение генерировать События по Вашим условиям. MouseEvent это события плеера, а не вашей программки. Эти события возникают как результат обработки плеером сообщений от периферийного устройства, поставляемых Системой. Затем Вы спрашиваете, как в классе-хранителе константы получить ссылку на экземпляр класса (на object). На самом деле нет никакой связи между этими предметами. MouseHover.MOUSE_HOVER это строка, хранящаяся в классе MouseHover в виде его свойства MOUSE_HOVER. Фактически, когда Вы добавляете объекту слушатель События, вы даже не сообщаете ему Класс этого события. Вы сообщаете только строку, слово, хранящееся в некой переменной или константе (допустим, это строка "mouseHover"). В частности, Вы с таким же успехом можете написать — это абсолютно то же самое, и здесь, как видите, нет вообще никакого указания на класс MouseHover. Такого класса-хранителя константы вообще может не быть. Это всего-лишь способ хранения строки, не имеющий к событиям абсолютно никакого отношения. Здесь нужно передать параметром строку, и эта строка берется откуда-то, совершенно неважно откуда, хоть просто вписана "на месте". И если object продиспатчит событие ЛЮБОГО класса, при условии что в свойстве type этого события будет строка "mouseHover", то будет вызвана функция-обработчик my_func. И вот только с этого момента начинается проверка класса произошедшего События, потому что my_func() получает в качестве аргумента экземпляр класса-события (возможно, несущего какие-то нужные данные). Экземпляр вполне конкретного Класса, и функция my_func() обязана типизировать, Событие какого именно Класса она принимает в качестве аргумента. То есть, добавление слушателя работает всего-лишь со строкой, а вызов обработчика происходит уже с классом События. Далее. Этот полученный my_func() экземпляр события обязательно содержит свойство currentTarget, в котором хранится ссылка на тот объект, которому непосредственно добавлялся слушатель, то есть в Вашем случае это object. Таким образом my_func() обязательно имеет ссылку на object и может с ним работать. Но у Вас другая структура, хотя толком Вы ее не описываете, видимо считая это не важным. Насколько я понял, Вам нужно вызвать my_func(), когда 1) мышь над объектом + 2) соблюдается еще какое-то условие. В таком случае Вам нужно подписать объект на событие "мышь над объектом" - MOUSE_OVER или ROLL_OVER, вызывая обработчиком не my_func(), а другую функцию. В этой функции Вы проверяете второе условие (ссылка на объект будет в экземпляре события класса MouseEvent), и если оно выполняется — вызываете my_func(), передавая ей, если нужно, какие-то параметры (ссылку на объект, например).
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 15
|
Цитата:
Я раза 3 пытался спросить, возможно ли создать событие, которое будет вызываться как системное, т.е. в 1 строку. Получается что так сделать нельзя, и поэтому я не вижу смысла в пользовательских событиях. Спасибо всем. |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Вы опять не поняли, можно!))) В одну строчку, только оно не будет "системное", а будет "пользовательское"
и работать будет лишь на тех объектах, которые Вы специально сделает, а не на всем на чем Вам хочется. Добавлено через 3 минуты Ведь запись вида говорит о том, что объект object заранее подготовлен под событие. |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 15
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|