Проблема Flash Action Script 3: изменение размера изображения не работает - PullRequest
0 голосов
/ 05 августа 2011

Проверьте эту ссылку: http://inno_ebay.s3.amazonaws.com/xml-product-slide/index-2.html

Этот объект SWF загружает внешний XML-файл (созданный сценарием php, который не находится на той же машине), а затем отображает список продуктов (миниатюру и название). Скрипт был протестирован и работает нормально на моей локальной машине, но при обновлении до хостинга изображения не меняются. Сначала я подумал, что это проблема производительности хостинга, поэтому я перенес его на amazon s3, но он все равно не работает. Любые предложения приветствуются, спасибо!

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Ваше приложение выдает нарушение безопасного доступа, которое предполагает, что вы пытаетесь загрузить изображение из другого домена в тот, на котором находится Flash.Хотя это возможно при использовании файла crossdomain.xml , у вас возникнут проблемы при попытке манипулировать удаленно загруженными изображениями.

Обходной путь, который я обычно использую в этих ситуациях, заключается в использованиипрокси-загрузчик, который существует в том же домене, что и Flash-фильм.Это серверный скрипт (PHP, ASP, что угодно), который выбирает удаленный образ для вас.Поскольку Flash общается только с прокси-скриптом, он считает, что загружаемое изображение получено из локального домена.Вам нужно будет проконсультироваться с вашим хостинг-провайдером, так как многие хостинговые компании запрещают использование прокси-скриптов, даже в таких добрых целях, как этот.

Вот простой пример, хотя вы, вероятно, захотите добавить немногобольше безопасности при развертывании в реальном мире:

proxyloader.php

<?php
    if(!isset($_GET['path'])) {
        echo 'Error';
        exit;
    }
    $path = $_GET['path'];

    $fileContent = file_get_contents($path);
    if(substr($fileContent,0,6) == 'GIF89a' || substr($fileContent,0,6) == 'GIF87a') {
        $contentType = 'image/gif';
    } else if(substr($fileContent,1,3) == 'PNG') {
        $contentType = 'image/png';
    } else {
        $hexContents = bin2hex($fileContent);
        if(strtolower(substr($hexContents,0,4)) == 'ffd8') {
            $contentType = 'image/jpeg';
        } else {
            echo "Error";
            exit;
        }
    }

    header("Content-Description: Proxied Image File");
    header("Content-Type: $contentType");
    header("Content-Disposition: attachment; filename=".$path);
    echo $fileContent;  
?>

, и вы будете использовать его в обычном загрузчике, например:

var loader:Loader = new Loader()
var req:URLRequest = new URLRequest("proxyloader.php?path="+remoteFilePath);
loader.load(req);
0 голосов
/ 05 августа 2011

Это XML:

http://ebay.doufin.com/ebay_query/getItems.php?seller_id=lightupfoto&site_id=0&item_id=270738606484

Это элемент:

<item link="http://cgi.ebay.com/2400w-Studio-Video-Red-Head-Continuous-Lighting-Kit-/270658608211" thumb="http://i.ebayimg.com/00/$(KGrHqZ,!lwE3JVj5IKsBODEto4sP!~~0_1.JPG?set_id=8800005007">
    <a href="http://cgi.ebay.com/2400w-Studio-Video-Red-Head-Continuous-Lighting-Kit-/270658608211" target='_blank'>2400w Studio Video Red Head Continuous Lighting Kit</a>
</item>

Это миниатюра:

enter image description here

Это 400 x 400 пикселей.

Итак, пожалуйста, какой у вас вопрос?

...