Просмотр полной версии : Перемещение главного окна
Godwarlock
13.06.2013, 17:49
Есть флешка. На сцене брошен большой квадрат, размером в 2000х2000(условно). В окне браузера естественно она не будет помещаться у тех, у кого монитор небольшого разрешения. Вопрос. Как сделать так, чтобы при клике мыше и держа её можно было перемещаться по этому большому квадрату. То есть если на нем брошены объекты, то просмотреть можно не только те, что помещаются в браузере, но и те что скрыты за пределом) Как я понял нужно создать событие на кнопку мыши, но как то не получается) Помогите кто может)
olexandr
14.06.2013, 00:12
самый простой пример.
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
var _bounds:Rectangle = new Rectangle(...);
Правильнее будет писать в нормальном редакторе кода, например Adobe Flash Builder, Flash Develop и т.п.
Godwarlock
14.06.2013, 02:19
Правильнее будет писать в нормальном редакторе кода, например Adobe Flash Builder, Flash Develop и т.п.
На сколько мне известно, это аналоги реального флеша с ограниченными возможностями)
А по поводу кода, что-то не очень работает) Точнее, ошибок не выдаёт, перемещать можно, но флеш не видит границ)
_bounds - растягивается до миллионых размеров наверно
maincode
14.06.2013, 02:28
На сколько мне известно, это аналоги реального флеша с ограниченными возможностями)
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 изучить что бы очевидные глупые вопросы не задавать.
А у var _bounds:Rectangle = new Rectangle(); в конструкторе идут парметры [x,y,width,height]. Но думаю это вам ни о чем не говорит, поэтому чтобы создать границы вам нужно сделать так.
var _bounds:Rectangle = target.getRect(target);
Godwarlock
15.06.2013, 13:56
Что-то не работает. Тоже самое. _bounds растягивается на весь экран
olexandr
15.06.2013, 14:07
Параметр, который я назвал _bounds - это прямоугольная область, в которой можно перетягивать объект.
Задается он в таком формате:
http://www.flasher.ru/forum/images/russian/style3/buttons/collapse_thead_collapsed.gif (http://www.flasher.ru/forum/#) Код AS3:
var _bounds:Rectangle = new Rectangle(x, y, width, height)
Возможно, вам нужно перетягивание вообще без ограничений? Тогда просто выкиньте этот параметр.
если нужны ограничения, то:
У каждого объекта есть позиция x и y, и размеры width и height. Допустим, нам нужно перетягивать объект target в пределах области от (0, 0) до (400, 200). в данном случае, код нужен такой
http://www.flasher.ru/forum/images/russian/style3/buttons/collapse_thead_collapsed.gif (http://www.flasher.ru/forum/#) Код AS3:
target.startDrag(false, new Rectangle(0, 0, 400 - _target.width, 200 - target.height));
Если у вас и сейчас что-то не получится, то бросайте это гиблое дело...
Godwarlock
15.06.2013, 14:27
Всё работает) Спасибо большое) Более менее разобрался)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.