![]() |
|
||||||||||
|
|||||
|
Регулятор громкости.
Пару тем нашла конечно, но не разобралась, точнее по прежнему не работает выход из функции изменения громкости, если отпускать кнопку мыши вне флешки, может подскажет кто-ньть (= как определить, что юзер отпустил кнопку за пределами swf ? public function changeVolume(event:MouseEvent):void { SoundMixer.soundTransform = new SoundTransform(event.currentTarget.mouseX / 48); //регулирование громкости volume_mc.vol_mask_mc.x = event.currentTarget.mouseX; // слушаем глобальный неработающий маусап stage.addEventListener(MouseEvent.MOUSE_UP,piypiy) //удаляем листенер, если маусап над текущим символом (изменение громкости) volume_mc.addEventListener(MouseEvent.MOUSE_UP,piypiy); // рекурсивно changeVolume что то типа драга volume_mc.addEventListener(MouseEvent.MOUSE_MOVE,changeVolume); } // удаляем рекурсию public function piypiy(e:MouseEvent):void { volume_mc.removeEventListener(MouseEvent.MOUSE_MOVE,changeVolume); }
__________________
cdc7600.livejournal.com Последний раз редактировалось cdc7600; 23.06.2009 в 13:51. |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 35
|
Я так понял changeVolume выполняеться при MOUSE_DOWN...
Возможно будет работать с MouseEvent.CLICK вместо MOUSE_UP. кстати volume_mc.addEventListener(MouseEvent.MOUSE_UP,piypiy); тоже неплохо бы удалять. |
|
|||||
|
неа, не работает
![]()
__________________
cdc7600.livejournal.com |
|
|||||
|
[+6 16.03.11]
Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
|
Вот вариант, пофигу где мышь отпущена
package { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.MouseEvent; /** * volume control * @author dedsky */ public class VolumeControl1 extends Sprite { private var turning:Boolean; private var an1:Number; private var an2:Number; public function VolumeControl1() { turning = false; cHandle.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownListener); stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpListener); stage.addEventListener(MouseEvent.MOUSE_MOVE, startTurning); } //мышь нажата над cHandle public function onMouseDownListener(event:MouseEvent):void { turning = true; an1 = Math.atan2(cHandle.mouseY, cHandle.mouseX); } //движение мыши public function startTurning(event:MouseEvent):void { if (turning) { an2 = Math.atan2(cHandle.mouseY, cHandle.mouseX); cHandle.rotation += (an2 - an1) * 180 / Math.PI; //независимость от скорости воспроизведения event.updateAfterEvent(); } } //кнопка мыши отпущена public function onMouseUpListener(event:MouseEvent):void { turning = false; } } } |
|
|||||
|
.
|
Я думаю, есть смысл подписывать stage на MouseEvent.MOUSE_UP и MouseEvent.MOUSE_MOVE только после нажатия на cHandle. И отписывать сразу после MouseEvent.MOUSE_UP
|
|
|||||
|
ээ, спасибо, конечно за код, но мне свой как-то понятнее)
вопрос такой, как определить, что юзер отпустил кнопку мыши за пределами swf ?
__________________
cdc7600.livejournal.com |
|
|||||
|
[+6 16.03.11]
Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
|
рисуете прозрачный спрайт по размерам сцены и определяете для него слушатель события MOUSE_OUT
|
|
|||||
|
|
|
|||||
|
да я читала все эти темы, пол дня убила, уж было думала, что совсем тупая, б. пока флэш не завис, перегрузила — код заработал, жесть, фууух)
спасибо всем)
__________________
cdc7600.livejournal.com |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|