Форум 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=178518)

Srednas 23.04.2012 16:05

Разница в выполнении в разных плеерах
 
Здравствуйте.
Ситуация такая:
Есть ролик, с использованием stage3D.
Если запускать его из браузера — все хорошо, но если с помощью Flash Player 11.2 Projector, то 3д-объекта не видно.
Почему так может быть?

bublic_bicubic 23.04.2012 16:08

может быть он подгружается отдельно?
Во флешке на него может быть локальная ссылка, либо у Projector не выставлены разрешения для общения с сетью.

Srednas 23.04.2012 16:22

Цитата:

Сообщение от bublic_bicubic (Сообщение 1076583)
может быть он подгружается отдельно?
Во флешке на него может быть локальная ссылка, либо у Projector не выставлены разрешения для общения с сетью.

Нет, 3д создается внутри флешки (используется альтернатива3д). оч странно, но исчезает даже надпись над 3д-объектом:
[img]http://s019.***********/i618/1204/43/6b7bcabb5a51.png[/img]

i.o. 24.04.2012 05:38

Кэп подсказывает, что версии разные.

Srednas 24.04.2012 07:51

Цитата:

Сообщение от i.o. (Сообщение 1076678)
Кэп подсказывает, что версии разные.

Тоже так сначала подумал, для этого задал вопрос, сделал маленькую флешку и запустил (в браузере и в прожекторе). Результат одинаков:
Код:

WIN 11,2,202,228

bublic_bicubic 24.04.2012 09:06

а можете выложить исходник аномальной флешки или ее части?

Srednas 24.04.2012 09:43

Цитата:

Сообщение от bublic_bicubic (Сообщение 1076687)
а можете выложить исходник аномальной флешки или ее части?

Он большой, но простой:
(для чего флешка: чтобы проверить работает ли передача/прием данных там, куда будет флешка вставлена, например, вставленная в программу на Delphi, и поддерживается ли 3д)

Код AS3:

        public class P7compatibility extends Sprite
        {
                private var t2:TextField = new TextField();
                private var camera:Camera3D;
                private var rootContainer:Object3D;
                private var box:Box;
                private var stage3D:Stage3D;
                private var ibox:WireFrame;
                private var cubeContainer:Object3D;
 
                public function P7compatibility()
                {
                                super();
                                stage.scaleMode = StageScaleMode.NO_SCALE;
                                stage.align = StageAlign.TOP_LEFT;
                                draw();
                }
 
                private function draw():void{
                                // «кнопка» (текстфилд в спрайте)
                                var t1:TextField = new TextField();
                                t1.text = "Отправить данные";
                                t1.width = t1.textWidth+3;
                                t1.height = t1.textHeight+3;
                                t1.selectable = false;
                                var s1:Sprite = new Sprite();
                                s1.graphics.lineStyle(1, 0xcccccc, 1, true);
                                s1.graphics.beginFill(0xffffff);
                                s1.graphics.drawRect(0, 0, t1.textWidth+3, t1.textHeight+3);
                                s1.addChild(t1);
                                addChild(s1);
                                s1.x = 10;
                                s1.y = 10;
                                s1.addEventListener(MouseEvent.ROLL_OVER, setHandCursor);
                                s1.addEventListener(MouseEvent.ROLL_OUT, setArrowCursor);
                                s1.addEventListener(MouseEvent.CLICK, sendToExternalContainer);
 
                                // текстфилд
                                t2.text = "Принятые данные:";
                                addChild(t2);
                                t2.x = s1.x;
                                t2.y = s1.y + s1.height + 10;
 
                                // слушатель вызова внешним кодом функции sendToFlash во флеше
                                ExternalInterface.addCallback("sendToFlash", receivedFromExternalContainer);
 
                                // текстфилд
                                var t3:TextField = new TextField();
                                t3.text = "Проверка 3D:";
                                t3.x = s1.x;
                                t3.y = t2.y + 50;
                                addChild(t3);
 
                                // блок для проверки поддержки 3д
 
                                stage3D = stage.stage3Ds[0];
                                camera = new Camera3D(10, 1000);
                                camera.z = 250;
                                camera.rotationY = -Math.PI;
 
                                // кнтейнеры для камеры и куба
                                rootContainer = new Object3D();
                                cubeContainer = new Object3D();
                                // куб
                                box = new Box()
                                box.setMaterialToAllSurfaces(new FillMaterial(0xCCCCCC, 0.99));
                                // ребра куба (куб только из ребер)
                                ibox = new WireFrame();
                                ibox = WireFrame.createEdges((box as Mesh), 0x000000, 1, 2);
                                // камера
                                camera.view = new View(150, 150, false, 0xFFFFFF, 1, 7);
                                camera.view.hideLogo();
                                camera.fov = Math.PI/3;
                                camera.view.x = s1.x;
                                camera.view.y = t3.y + t3.textHeight + 10;
                                // корневой контейнер содержит камеру и контейнер для куба
                                rootContainer.addChild(camera);
                                // контейнер куба содержит куб и ребра куба
                                cubeContainer.addChild(box);
                                cubeContainer.addChild(ibox);
                                rootContainer.addChild(cubeContainer);
                                addChild(camera.view);
                                // ждем создания контекста 3д
                                stage3D.addEventListener(Event.CONTEXT3D_CREATE, init);
                                stage3D.requestContext3D();
                }
 
                // реакция на создание контекста 3д
                private function init(e:Event):void{
                                stage3D.removeEventListener(Event.CONTEXT3D_CREATE, init);
                                // загрузка ресурсов в контекст
                                for each (var resource:Resource in rootContainer.getResources(true)) {
                                        resource.upload(stage3D.context3D);
                                }
                                // слушатель на энтерфрейм
                                this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                }
 
                // слушатель на энтерфрейм
                private function enterFrameHandler(e:Event):void{
                                // вращение куба
                                cubeContainer.rotationX += 0.01;
                                cubeContainer.rotationY += 0.05;
                                cubeContainer.rotationZ += 0.05;
                                camera.render(stage3D);
                }
 
                // изменение вида курсора
                private function setHandCursor(e:MouseEvent):void{
                                Mouse.cursor = MouseCursor.BUTTON;
                }
                private function setArrowCursor(e:MouseEvent):void{
                                Mouse.cursor = MouseCursor.AUTO;
                }
 
                // посылает по клику во внешнюю функцию sendFromFlash строку
                private function sendToExternalContainer(e:MouseEvent):void{
                                ExternalInterface.call("sendFromFlash", "Hello, Im flash");
                }
 
                // принимает строку из внешней функции sendToFlash
                private function receivedFromExternalContainer(value:String):void{
                                t2.text = "Принятые данные: \n" + value;
                }
        }


iNils 24.04.2012 11:29

Цитата:

Сообщение от Srednas (Сообщение 1076685)
Тоже так сначала подумал, для этого задал вопрос, сделал маленькую флешку и запустил (в браузере и в прожекторе). Результат одинаков:
Код:

WIN 11,2,202,228

Можно было просто кликнуть правой мышью по плееру и в контекстному меню посмотреть номер версии.

Wolsh 24.04.2012 11:36

Цитата:

и в контекстному меню посмотреть номер версии
Может контекстное меню полностью отключено, плеер-то 11.2 ;)

Srednas 24.04.2012 11:45

Цитата:

Сообщение от iNils (Сообщение 1076701)
Можно было просто кликнуть правой мышью по плееру и в контекстному меню посмотреть номер версии.

Да, конечно можно.
Но в любом случае — версия одна, а отображение разное.
Чем это может быть вызвано?


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

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