Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   проблемы с swf лоадером (http://www.flasher.ru/forum/showthread.php?t=183090)

hash666 11.08.2012 17:02

проблемы с swf лоадером
 
Добрый день.
Столкнулся на первый взгляд с простой проблемой, но вот уже больше суток не могу её решить.
Суть:
делаю прелоадер для приложения вконтакте. Основную флешку выложил скажем на http://mygame.hdd1.ru/mgame.swf так вот её и пытаюсь загрузить.

Код AS3:

package  
{
        /**
        * ...
        * @author 1
        */

        import flash.display.Sprite;
        import flash.events.Event;
        import flash.display.Loader;
        import flash.net.URLRequest;
        import flash.events.IOErrorEvent;
        import flash.events.ProgressEvent;
        import flash.system.Security;
        import flash.text.TextField;       
        import flash.text.TextFormat;
        import flash.text.TextFieldAutoSize;
        import flash.net.URLLoader;
        import flash.net.URLLoaderDataFormat;
        import flash.net.URLRequestMethod;
        import flash.system.LoaderContext;
        import flash.system.ApplicationDomain;
        import flash.system.SecurityDomain;
 
        public class Main extends Sprite
        {
 
                private var tf: TextField;
                private var tb: int;
                private var mLoader: Loader;
                private var request:URLRequest;
                private var con: LoaderContext;
 
                public function Main():void
                {
                        Security.allowDomain("*");
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
 
                        tf = new TextField();
                        addChild(tf);
                        tf.autoSize = TextFieldAutoSize.LEFT;
                        tf.selectable = false;
                        tf.multiline = true;
                        tf.x = 150;
                        tf.y = 225;
                        tf.visible = true;
 
                        var format:TextFormat = new TextFormat();
                        format.font = "Verdana";
                        format.size = 30;
                        format.color = 0xF0D13F;
                        format.bold = true;
                        tf.defaultTextFormat = format;
                        tf.text = "ЗАГРУЗКА... 0%";                       
 
                        loadMovie("http://mygame.hdd1.ru/mgame.swf");                       
                }
 
                private function loadMovie(url:String):void {
 
                        con = new LoaderContext(false, ApplicationDomain.currentDomain);
 
                        request = new URLRequest(url);
                        request.contentType = "application/octet-stream";                       
                        request.method = URLRequestMethod.POST;
 
                        mLoader = new Loader();                       
                        mLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
                        mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
                        mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
 
                        mLoader.load(request, con);
                }
 
                private function onCompleteHandler(loadEvent:Event):void {                       
                        tf.text = "COMPLETE" + tb.toString();
                        addChild(loadEvent.currentTarget.content);                       
                        addChild(tf);
                }
 
                private function onProgressHandler(event:ProgressEvent):void {                       
                        tf.text = "ЗАГРУЗКА... " + Math.round(event.bytesLoaded / event.bytesTotal * 100) + "%"; 
                        tb = event.bytesTotal;
                }
 
                private function ioErrorHandler (e:IOErrorEvent):void {
                        tf.text = "ERROR" + tb.toString() + e.text;
                }
        }
 
 
}

локально всё работает, т.е. есть есть грузить не с "http://mygame.hdd1.ru/mgame.swf" а например из "../mgame.swf"

потом случайно выяснил что лоадер грузить не 130 000 байт (именно столько весит mgame.swf), а всего 160.
так вот, если откруть адрес http://mygame.hdd1.ru/mgame.swf в firefox то загркжаеться swf и всё нормально, а если в IE то загружаеться HTML
Код:

<html><body leftmargin=0 topmargin=0 scroll=no> <embed width=100% height=100% fullscreen=yes src="http://mygame.hdd1.ru/mgame.swf"></body></html>n
т весит эта страница именно 160 байт.

почему грузиться какой то HTML а не SWF? кто нибуть с таким сталкивался? Что я делаю не так?

t4arty 11.08.2012 21:40

пользуйтесь тегом <object> для вставки флеша на страницу. как? (посмотрите в соседних темах форума, были поддобные темы)

hash666 11.08.2012 21:42

Если проще то:
Вконтакт нужно загрузить swf который будет загружаться при старте приложения. так вот загрузил я этот swf который в свою очередь являеться лоадером и загружает основную swf, но этого не происходит вместо swf приходит HTML.

Если же и лоадер и основной swf на одном сайте то всё получается, а если пробуем грузиьб с другого то Error #2036

Добавлено через 15 часов 25 минут
пример php скрипта который вернёт mgame.swf
PHP код:

<?php
$file 
= ("mgame.swf");
header ("Content-Type: application/octet-stream");
header ("Accept-Ranges: bytes");
header ("Content-Length: ".filesize($file));
readfile($file);
?>


caseyryan 12.08.2012 14:50

Цитата:

пользуйтесь тегом <object> для вставки флеша на страницу. как? (посмотрите в соседних темах форума, были поддобные темы)
Кто ж ему даст-то страницу вконтакте изменять )
Цитата:

Если же и лоадер и основной swf на одном сайте то всё получается
В корневой директории домена есть файл политик crossdomain.xml с нужными разрешениями?

t4arty 12.08.2012 15:59

что за ошибка #2036, что выдает описание ошибки?

caseyryan 12.08.2012 16:01

Цитата:

что за ошибка #2036
Это ошибка ввода / вывода. Файл не удается загрузить. И скорее всего дело в междоменной политике

incvizitor 13.08.2012 13:25

Честно говоря, по ссылке, что Вы сбросили ничего ен лежит. Может быть проблема в этом?)

caseyryan 13.08.2012 14:32

скорее это просто ссылка для примера, возможно с локалки

hash666 13.08.2012 19:30

Цитата:

В корневой директории домена есть файл политик crossdomain.xml с нужными разрешениями?
Код:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy
SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
<site-control permitted-cross-domain-policies="all"/>
</cross-domain-policy>

что я там только не пробовал писать =) ничего не помогает

а вообще, решение с php меня более чем устраивает

caseyryan 13.08.2012 19:57

hash666, тесты локальные? С какого браузера?


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

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