2013-01-23 51 views
0

我試圖平滑從另一個網站加載的縮放圖像。圖像不是動畫的。 如果我使用本地圖像,效果很好。但它似乎不適用於從遠程服務器加載的圖像。如何在ActionScript3中平滑從服務器加載的圖像

下面是摘錄:

... 

    //_loader.load(new URLRequest(http://img.example.com/remote.jpg)); 
    _loader.load(new URLRequest("../assets/local.jpg")); 
    _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); 

    ... 

protected function completeHandler(event:Event):void 
{ 
    var image:Bitmap = Bitmap(event.target.content); 
    image.smoothing = true; 
    image.pixelSnapping = "never"; 
} 

至於測試,當我加載local.jpg,它可以完美運行。但是當我從服務器加載remote.jpg時,平滑參數不起作用。

任何人都知道爲什麼? 我到處搜索,但沒有人遇到同樣的問題。我沒有使用Flash Professional,它是一個在Flash Builder中構建的純ActionScript項目。而圖像不是動畫。所以有線...

+1

你是否在做'圖像'的任何事情?因爲它是一個單獨的實例,所以任何更改都不會生效 – apscience

+0

@gladoscc'Bitmap(event.target.content)'只是將映射到'Bitmap'的圖像返回,因此引用與'Loader'中的引用相同目的。 – Teejay

回答

0

我搜索一天一天,終於找到了答案:

_loader.load(new URLRequest("http:…." , new LoaderContext(true)); 

最重要的是負載的第二個參數( )方法,它是一個LoaderContext。參考: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#load()

儘管我在服務器中設置了跨域文件,但沒有「new LoaderContext(true)」,它將不會讀取跨域文件。這就是爲什麼它一開始不起作用。

如果你有同樣的問題,希望這對您有所幫助!

2

因爲你是從你需要設置在圖像舉行的Web服務器上的跨域策略XML文件中的遠程服務器拉的圖像。

如果沒有這個,你不能改變在子像素級別的位圖。實例的

http://www.senocular.com/pub/adobe/crossdomain/policyfiles.html

更多細節 http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.edu.html

+0

我已經設置了crossdomain.xml。我想知道它不起作用,因爲我拉圖片時沒有請求這個crossdomain.xml文件。 –

+0

因此,您已經在保存圖像的Web服務器的根目錄中添加了crossdomain.xml文件,並且跨域文件將*指定爲允許的域名?是?這應該足以允許修改位圖數據。 – crooksy88

相關問題