Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не работает OBJECT_DOUBLE_CLICK вместе с ViewportLayer (http://www.flasher.ru/forum/showthread.php?t=133381)

3Desian 03.12.2009 17:40

Не работает OBJECT_DOUBLE_CLICK вместе с ViewportLayer
 
Приветствую.
Собсно вопрос в заголовке "Не работает OBJECT_DOUBLE_CLICK вместе с ViewportLayer".
Объекты добавляются в DisplayObject3D и в разные ViewportLayer-ы.
Код AS3:

viewport.buttonMode = true;
                        // Режим сортировки Viewport-ов по индексу
                        viewport.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT;
                        // Создаются Viewport-слои и индексируются
                        ViewportLayer0 = new ViewportLayer(viewport,(new DisplayObject3D()));
                        ViewportLayer0.layerIndex = 0;
 
                        ViewportLayer1 = new ViewportLayer(viewport,(new DisplayObject3D()));
                        ViewportLayer1.layerIndex = 1;
 
                        ViewportLayer2 = new ViewportLayer(viewport,(new DisplayObject3D()));
                        ViewportLayer2.layerIndex = 2;
 
                        // Viewport-слои добавляются во Viewport
                        viewport.containerSprite.addLayer(ViewportLayer0);
                        viewport.containerSprite.addLayer(ViewportLayer1);
                        viewport.containerSprite.addLayer(ViewportLayer2);
 
// далее фукция создаёт объекты, подписывает их на события и распихивает их в ViewportLayer-ы
public function creator()
{
бла-бла-бла...
object.addEventListener(InteractiveScene3DEvent.OBJECT_DOUBLE_CLICK, objectChanger);
if (objectType=="ground")
{
ViewportLayer1.addDisplayObject3D(object, true);
} else {ViewportLayer2.addDisplayObject3D(object, true);}
}
//затем
public function objectChanger (event:InteractiveScene3DEvent)
                {
                        trace("clic!!!!!!!!!");
}

При двойном клике не работает, если заменить OBJECT_DOUBLE_CLICK на OBJECT_CLICK
всё работает.
Так вот если не пихать объекты по ViewportLayer-ам то и OBJECT_DOUBLE_CLICK работает.
Кто знает почему так и как побороть?

bicubic_bublic 03.12.2009 18:23

может поможет: ?
Код AS3:

object.doubleClickEnabled = true;


3Desian 04.12.2009 09:30

Не получается т.к. мой Object наследуется от TriangleMesh3D, а метод doubleClickEnabled работает только у объектов класса InteractiveObject.

Добавлено через 7 часов 41 минуту
У кого нибудь есть ещё идеи? А то я в замешательстве. Уж не знаю что и делать ещё. Гуглю, но пока безрезультатно.

SamFR 04.12.2009 23:17

В крайнем случае можно самому отслеживать двойной клик. Не так уж и сложно делается.

bicubic_bublic 05.12.2009 04:26

такое чувство что надо соответствующему дисплейобъекту сделать doubleClickEnabled..
только вот найти его не так то легко.. можно покапаться

3Desian 05.12.2009 17:37

Пристите, не понял... :)
SamFR, Вы предлагаете стейдж подписать на двойной клик?
А в функции objectChanger написать что то вроде:
Код AS3:

public function objectChanger (event:InteractiveScene3DEvent)
{if(doubleClickVar == true)
{
trace("clic!!!!!!!!!");
doubleClickVar = false;
}
}

Так?
bicubic_bublic, Что за "соответствующий Дисплейобджект"?

bicubic_bublic 05.12.2009 18:20

думаю так:
Код AS3:

viewport.doubleClickEnabled = true;

-----

ну или там
Код AS3:

ViewportLayer1.doubleClickEnabled = true;

или
Код AS3:

ViewportLayer2.doubleClickEnabled = true;


-----

гланул в исходники пепервижн - действительно в обычном вьюпорте doubleClickEnabled по умолчанию..
Код AS3:

package org.papervision3d.view {
 
        public class Viewport3D extends Sprite implements IViewport3D {
 
                ...
 
                protected function init():void {
 
                        ...
 
                        _containerSprite = new ViewportBaseLayer(this);
                        _containerSprite.doubleClickEnabled = true;
 
                        ...
 
                }
 
                ...
 
        }
}


3Desian 07.12.2009 15:32

Большое спасибо, товарищ.
Сработало. :)


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

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