Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   e.stageX и e.stageY больше stage.stageWidth и stage.stageHeight (http://www.flasher.ru/forum/showthread.php?t=138669)

random13 13.04.2010 18:00

e.stageX и e.stageY больше stage.stageWidth и stage.stageHeight
 
как может получится подобная ситуация?

Zebestov 13.04.2010 18:09

а что это за свойства stageX и stageY?
тупанул =)

ps_spectre 13.04.2010 18:11

когда stage.scaleMode = StageScaleMode.SHOW_ALL;

random13 13.04.2010 18:50

но у меня в том то и дело
Код AS3:

stage.scaleMode = StageScaleMode.NO_SCALE


ps_spectre 13.04.2010 19:01

при stage.scaleMode = StageScaleMode.NO_SCALE
координаты мышки не больше чем размер stage.
Потому что при resize высота и ширина сцены тоже меняются.
собственно даже событие такое происходить. Event.RESIZE

Psycho Tiger 13.04.2010 19:55

Странные вы.
Цитата:

stage.scaleMode = StageScaleMode.NO_SCALE
Переводим: не маштабировать.
Цитата:

Потому что при resize высота и ширина сцены тоже меняются.
Это ок? Меняем, если не масштабируем?)
Код AS3:

stage.scaleMode = StageScaleMode.SHOW_ALL

А вот тут уже содержимое всегда ровно столько сколько экрана.

silin 13.04.2010 20:00

>>e.stageX и e.stageY больше stage.stageWidth и stage.stageHeight, как может получится подобная ситуация?

будет пример?
или самим предлагается достигнуть такого, типа шарада: а вот кому не слабо ? :)

ps_spectre 13.04.2010 20:10

Psycho Tiger,
речь шла о stageWidth, stageHeight.
----
формально:
1)stage.scaleMode = StageScaleMode.SHOW_ALL => растягиваем окно флеш плеера.
stage.stageWidth, stage.stageHeight не меняется, но координаты мышки больше могут быть этих значений.
2)stage.scaleMode = StageScaleMode.NO_SCALE => растягиваем окно флеш плеера.
stage.stageWidth, stage.stageHeight меняются, координаты мышки не могут быть больше этих значений.
----
причем тут содержимое? Вопрос конкретно был когда координата мыши больше чем фактическое значение размера сцены.

Psycho Tiger 13.04.2010 22:00

Цитата:

stage.stageWidth, stage.stageHeight меняются, координаты мышки не могут быть больше этих значений.
А если мышку зажать и перетащить за окно флеш плеера - координаты всё равно будут передаваться. =)

А в предыдущем посте... я даже не помню, к чему я это писал. Надо меньше пить =)

random13 14.04.2010 12:36

такое произошло в следующей ситуации, пользуюсь наработками товарища etcs по работе с скролом + плюс кое что свое и чужое, вот что получилось:

Код AS3:

package libraries
{
        import flash.display.InteractiveObject;
        import flash.display.Stage;
        import flash.events.MouseEvent;
        import flash.external.ExternalInterface;
        import flash.geom.Point;
        import flash.geom.Rectangle;
 
        import spark.primitives.Rect;
 
        public class CustomMouseWheel
        {
                private static var _instance:CustomMouseWheel;
                private var _stage:Stage;
                private var _cloneEvent:MouseEvent;
                private var _lastCoord:Point;
 
                public function CustomMouseWheel(singletoniser:Singletoniser) {
                        if(singletoniser == null) {
                                throw new Error('This is singleton class, use getInstance() instead');
                        }
                }
 
                public static function getInstance():CustomMouseWheel
                {
                        CustomMouseWheel._instance ? CustomMouseWheel._instance : CustomMouseWheel._instance = new CustomMouseWheel( new Singletoniser() );
                        return CustomMouseWheel._instance;
                }
 
                public static function setup(stage:Stage):void {
                        CustomMouseWheel.getInstance()._setup(stage);                       
                }
 
                private function _setup(stage:Stage):void {
                        this._stage = stage;
                        this._stage.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
                        this._stage.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
                        this._stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
                        ExternalInterface.addCallback('sendMouseWheelEvent', externalMouseEvent);
                }
 
                private function onMouseOver(e:MouseEvent):void {
                        this._stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
                }
 
                private function onMouseOut(e:MouseEvent):void {
                        this._stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
                }
 
                private function onMouseMove(e:MouseEvent):void {
                        this._lastCoord = new Point(e.stageX,e.stageY);
                        this._cloneEvent = MouseEvent(e);
                }
 
                private function externalMouseEvent(delta:Number):void {
                        if(delta > 0 && delta < 1)
                                delta = 1;
                        else if(delta > -1 && delta < 0)
                                delta = -1;
 
                        var wheelEvent:MouseEvent = new MouseEvent(
                                MouseEvent.MOUSE_WHEEL,
                                true,
                                false,
//                                this._cloneEvent.stageX,
//                                this._cloneEvent.stageY,
                                this._lastCoord.x,
                                this._lastCoord.y,
                                this._cloneEvent.relatedObject,
                                this._cloneEvent.ctrlKey,
                                this._cloneEvent.altKey,
                                this._cloneEvent.shiftKey,
                                this._cloneEvent.buttonDown,
                                delta
                        );
                        this._stage.dispatchEvent(wheelEvent);
                }
        }
}
 
class Singletoniser {}

про координаты как я уже писал изменялись вот тут

Код AS3:

//                                this._cloneEvent.stageX,
//                                this._cloneEvent.stageY,
                                this._lastCoord.x,
                                this._lastCoord.y,

поэтому собственно закоменчено и добавлена точка


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

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