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

WSW 08.10.2014 17:45

Отсутствие графики в браузерном тестировании
 
Доброго времени суток.
Суть кода - загружает картинку в рамочке. Позволяет мышкой прокручивать (до рамки), роликом мышки масштабировать изображение.
При запуске во Adobe Flash CS6 код исполняется великолепно.
При запуске в браузере нет графики.
Цель - выявить причину.
Код:

package  {
        //http://cs623426.vk.me/v623426204/3556/pKJTdrHkvio.jpg
        //import flash.display.Sprite;
        //import flash.display.Bitmap;
        //import flash.display.Shape;
        //import flash.events.MouseEvent;
        import flash.geom.Matrix;
        import flash.net.URLRequest;
        //import flash.events.*;
        import flash.display.*;
        //import flash.text.*;
        import flash.events.*;       
        import flash.media.Sound;
        import flash.media.SoundChannel;
        import flash.utils.Timer;
       
        public class CastleInterface extends Sprite {
                //private static var _map_Bitmap:ImportedImage1;
                private var mapCont:Sprite;
                private var mapMask:Shape;
                private var border:Shape;
                private var center:Shape;
                var size:int;
                var CityBitmapLoader:Loader;
                var CityBitmap:Bitmap;
               
               
                public function CastleInterface() {
                       
                        //const IMAGE_URL:String = "http://**********/58412586/image.png";
                        const IMAGE_URL:String = "http://**********/58412619/image.png";
                        CityBitmapLoader = new Loader();
                        CityBitmapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, CityBitmapLoader_complete);
                        CityBitmapLoader.load(new URLRequest(IMAGE_URL));
                        /*addChild(romeImageBitmap);
                        var romeImageData:RomeImage = new RomeImage();
                        var romeImageBitmap:Bitmap = new Bitmap(romeImageData);
                        addChild(romeImageBitmap);*/

                        //var mapBitmap:Bitmap ;//= new Bitmap(romeImageData);
                        //addChild(mapBitmap);
                        mapCont = new Sprite();
                        //mapCont.addChild(CityBitmap);
                        mapCont.x=0;
                        mapCont.y=0;
                        addChild(mapCont);
                        mapCont.addEventListener(MouseEvent.MOUSE_DOWN, downHandler);
                        //
                        mapMask = new Shape();
                        mapMask.graphics.beginFill(0x0, 1);
                        mapMask.graphics.drawRect(00, 00, 700, 550);
                        mapMask.graphics.endFill();
                        mapCont.mask = mapMask;
                        //
                        size = 350;
                        border = new Shape();
                        border.graphics.lineStyle(1, 0xff0000, 1);
                        border.graphics.moveTo(0, 0);
                        border.graphics.lineTo(700, 0);
                        border.graphics.lineTo(700, 550);
                        border.graphics.lineTo(0, 550);
                        border.graphics.lineTo(0, 0);
                        //
                        center = new Shape();
                        center.graphics.lineStyle(1, 0xff0000, 1);
                        center.graphics.moveTo( 700/2+20, 550/2);
                        center.graphics.lineTo( 700/2-20, 550/2);
                        center.graphics.moveTo( 700/2, 550/2+20);
                        center.graphics.lineTo( 700/2, 550/2-20);
                        //
                        this.addChild(mapCont);
                        this.addChild(mapMask);
                        this.addChild(border);
                        this.addChild(center);
                        //
                        this.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandlerl);
                }
                private function wheelHandlerl(event:MouseEvent):void
                {
                       
                        trace("Wheel");
                        /*var direction:int = event.delta/Math.abs(event.delta);
                        var scale:Number = this.scale + direction*0.1;
                        if (scale < minScale) scale = minScale;
                        if (scale > maxScale) scale = maxScale;
                        applyScale(scale, this.mouseX, this.mouseY);*/
                       
                        if (event.delta < 0)applyScale(0.95, this.mouseX, this.mouseY);//scaling(0.95);
                        if (event.delta > 0)applyScale(1.05, this.mouseX, this.mouseY);//scaling(1.05);
                        Check_The_Granici();
                        trace("Scale = "+mapCont.scaleX);
                        event.updateAfterEvent();
                }
                private function downHandler(event:MouseEvent):void
                {
                        this.stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
                        this.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
                        mapCont.startDrag();
                }
                private function moveHandler(event:MouseEvent):void
                {//mapMask
                        Check_The_Granici();
                        event.updateAfterEvent();
                }
                private function upHandler(event:MouseEvent):void
                {
                        this.stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
                        this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
                        if (mapCont.x > 20 && mapCont.y > 20)
                        {mapCont.x = 20 ; mapCont.y = 20;}
                       
                        if (mapCont.x+mapCont.width <350)
                        mapCont.x = 350 - mapCont.width;
                        mapCont.stopDrag();
                }
                private function Check_The_Granici()
                {
                        if (mapCont.x > 00 )
                        {mapCont.x = 00 ;}
                        if (mapCont.y > 00)
                        {mapCont.y = 00 ;}
                        if (mapCont.x+mapCont.width <700)
                        mapCont.x = 700 - mapCont.width;
                        if (mapCont.y+mapCont.height <550)
                        mapCont.y = 550 - mapCont.height;
                }
                /*private function scaling(Scale:Number)
                {
                        if (Scale > 1 && mapCont.scaleX < 2)
                        {mapCont.scaleX *= 1.05;
                    mapCont.scaleY *= 1.05;}
                        else if (Scale < 1 && mapCont.scaleX > 0.65)
                        {mapCont.scaleX *= 0.95;
                    mapCont.scaleY *= 0.95;
                        }
                        trace("Wheel. ScaleX = "+mapCont.scaleX);
                }*/
                private function applyScale(scale:Number, centerX:Number, centerY:Number):void
        {
                        //супер пупер мего ограничение(защита)
                        if (!((scale > 1 && mapCont.scaleX < 2) || (scale < 1 && mapCont.scaleX > 0.65)))
                        return;
            // создаем новую матрицу трансформации
            var newMatrix:Matrix = new Matrix();
            // смещаем матрицу в точку,
            // относительно которой будет происходить масштабирование
            newMatrix.translate(-centerX, -centerY);
            // прменяем измененное(!!!) масштабирование
            newMatrix.scale(scale, scale);
            // возвращаем матрицу в исходное местоположение
            newMatrix.translate(centerX, centerY);
            //
            // получаем текущую матрицу трансформации
            var matrix:Matrix = mapCont.transform.matrix;
            // умножаем текущую матрицу на новую
            matrix.concat(newMatrix);
            //
            // применяем полученную матрицу трансформации
            mapCont.transform.matrix = matrix;
            //
            // запоминаем текущее значение скейла
        }
               
                        function CityBitmapLoader_complete(evt:Event):void {
                            var bmp:Bitmap = CityBitmapLoader.content as Bitmap;
                            CityBitmap = new Bitmap(bmp.bitmapData);
                            CityBitmap.x = 0;
                            CityBitmap.y = 0;
                            CityBitmap.rotation = 0;
                                bmp=null;
                            mapCont.addChild(CityBitmap);
                                trace ("Width ="+CityBitmap.width);
                                trace ("Scale ="+CityBitmap.scaleX);
                        }
        }
       
}


GBee 08.10.2014 22:07

Подписывайтесь на события-ошибки. Наверно по секьюрити слетает.

Добавлено через 49 секунд
http://cs623426.vk.me/crossdomain.xml угу

WSW 09.10.2014 08:38

Честно говоря, я вас не понял. По какому секьюрити слетает? Что это за xml разметка?

WSW 09.10.2014 08:47

Дело в том, что я вижу лишь белый экран. И иногда замечаю единичное мигание (скорее всего, подгрузилась картинка, показалась и исчезла). Запускал в браузере Googl-а. В остальных браузерах ругается на конфеденциальность.

Добавлено через 38 секунд
Приведённый вами xml документ ни о чём не сказал

GBee 09.10.2014 10:06

Вы на свой сайт заливаете или во вконтактик?

Добавлено через 39 секунд
Картинку грузите со своего сайта или из вконтактика?

WSW 09.10.2014 13:05

Картинка загружается из rhgost по прямой ссылке.
Код рабочий (если запустить его в проэкте)

GBee 09.10.2014 13:30

Код рабочий, просто политика запрещает качать картинки. В ИДЕ это игнорируется. Почитайте про crossdomain.xml

WSW 09.10.2014 14:08

Если я вас верно понимаю, то скачивание запрещено политикой именно сайта-источника картинки, верно?
Но почему тогда картинка загружается при запуске не в браузере, а во флеш?
Насколько понял, это разрешение обмена данными между доменами.
Решение проблемы - создать сайт, где хранились бы нужные картинки, чтобы их можно было в любое время подгрузить в клиентской SWF?

GBee 09.10.2014 16:48

Ну можно прокси-сервер забацать. Или найти хак свежий для решения проблемы, вроде был в блогах, только не знаю работает он сейчас или нет


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

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