Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Перемещение главного окна (http://www.flasher.ru/forum/showthread.php?t=201213)

Godwarlock 13.06.2013 17:49

Перемещение главного окна
 
Есть флешка. На сцене брошен большой квадрат, размером в 2000х2000(условно). В окне браузера естественно она не будет помещаться у тех, у кого монитор небольшого разрешения. Вопрос. Как сделать так, чтобы при клике мыше и держа её можно было перемещаться по этому большому квадрату. То есть если на нем брошены объекты, то просмотреть можно не только те, что помещаются в браузере, но и те что скрыты за пределом) Как я понял нужно создать событие на кнопку мыши, но как то не получается) Помогите кто может)

olexandr 14.06.2013 00:12

самый простой пример.

Код AS3:

                target.addEventListener(MouseEvent.MOUSE_DOWN, downHandler);
 
                private function downHandler(e:MouseEvent):void {
                        stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
                        target.startDrag(false, _bounds);
                }
 
                private function upHandler(e:MouseEvent):void {
                        target.stopDrag();
                        stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
                }
 
        }
}

target - объект, по которому кликаем и таскаем
bounds - границы перетаскивания

Godwarlock 14.06.2013 01:50

Цитата:

\class2.as, строка 9 1013: Атрибут "private" можно использовать для определений свойств класса.
Вот такую ошибку выдает

maincode 14.06.2013 01:52

пишите на кадрах в IDE? ай яй яй... ну что с вами поделать... убирайте private :)

Godwarlock 14.06.2013 02:06

Цитата:

target.addEventListener(MouseEvent.MOUSE_DOWN, downHandler);

function downHandler(e:MouseEvent):void {
stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
target.startDrag(false, _bounds);
}

function upHandler(e:MouseEvent):void {
target.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
}

Теперь выдаёт
Цитата:

Монтажный кадр 1, слой "Слой 2", кадр 1, строка 5 1067: Неявное приведение значения типа flash.display:MovieClip к несоответствующему типу flash.geom:Rectangle.
Можете расшифровать "... на кадрах IDE"?) Как по другому нужно? Или правильнее даже

maincode 14.06.2013 02:09

_bounds - это у вас MovieClip? а должен быть Rectangle
Код AS3:

var _bounds:Rectangle = new Rectangle(...);

Правильнее будет писать в нормальном редакторе кода, например Adobe Flash Builder, Flash Develop и т.п.

Godwarlock 14.06.2013 02:19

Вложений: 1
Цитата:

Правильнее будет писать в нормальном редакторе кода, например Adobe Flash Builder, Flash Develop и т.п.
На сколько мне известно, это аналоги реального флеша с ограниченными возможностями)

А по поводу кода, что-то не очень работает) Точнее, ошибок не выдаёт, перемещать можно, но флеш не видит границ)
_bounds - растягивается до миллионых размеров наверно

maincode 14.06.2013 02:28

Цитата:

Сообщение от Godwarlock (Сообщение 1137910)
На сколько мне известно, это аналоги реального флеша с ограниченными возможностями)

Adobe Flash - это графический редактор, инструмент для рисования, создания анимации, но ни как не инструмент для написания кода. Конечно вы можете в нем писать код, но это все равно что писать Докторскую диссертацию в Фотошопе, когда есть Word для этих целей. Точно так же для написания кода существуют редакторы кода FlashBuilder, FlashDevelop и другие аналоги...


А по поводу вашего кода - наверно вы не правильно определили границы _bounds

Godwarlock 14.06.2013 02:36

А как их определить?
Цитата:

var _bounds:Rectangle = new Rectangle();
Вот здесь что-то надо добавить? Или во флеше символ _bounds должен быть каким-то определенным) Или в коде нужно прописать X и Y?)

Bletraut 14.06.2013 12:04

Godwarlock, вам надо бы конечно для начала сам as3 изучить что бы очевидные глупые вопросы не задавать.
А у
Код AS3:

var _bounds:Rectangle = new Rectangle();

в конструкторе идут парметры [x,y,width,height]. Но думаю это вам ни о чем не говорит, поэтому чтобы создать границы вам нужно сделать так.
Код AS3:

var _bounds:Rectangle = target.getRect(target);



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

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