[英]External swf plays very slow on iOS
我正在使用as3和Adobe Air編寫應用程序,該應用程序加載外部SWF文件並在應用程序內部播放它們。 該容器在android上工作正常,外部swf文件的動畫非常酷。
但是,在iOS(iPad 2)上,它的運行速度非常慢,好像每秒只播放1幀。
無論如何,有沒有它可以使播放速度更快。
我的應用程序配置如下:
<initialWindow>
<autoOrients>false</autoOrients>
<aspectRatio>landscape</aspectRatio>
<renderMode>gpu</renderMode>
<fullScreen>false</fullScreen>
<visible>true</visible>
<softKeyboardBehavior>none</softKeyboardBehavior>
</initialWindow>
這是我加載外部swf的代碼部分:
public function set url(value:String):void
{
_url = value;
object.source = File.applicationDirectory.resolvePath(value).url;
object.addEventListener(Event.COMPLETE , onLoaded);
}
protected function onLoaded(event:Event):void
{
object.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
protected function onEnterFrame(event:Event):void
{
if((object.content as Object).currentFrameLabel == "stop")
(object.content as Object).stop();
}
我還嘗試注釋Enter框架事件偵聽器,但未進行任何更改。
提前致謝。
編輯:我發現實際上是很奇怪的東西。 當我從具有快速配置的應用程序運行該應用程序時,它運行得很快。 但是,當我發布它或在運行時使用“標准”選項時,它的運行速度非常慢。 經過AIR 3.2測試
嘗試將渲染模式設置為直接:
<renderMode>direct</renderMode>
請記住,當您僅向GPU進行渲染時,如果您要渲染動畫,則會減慢速度。 盡管渲染到GPU的速度很快,但將視頻內存分配給GPU的速度卻很慢。 如果您為GPU提供排他性,則每一幀都需要更新視頻內存。
另一件事是,所有矢量都將被柵格化,因此某些事物將呈現像素化。
有兩件事:
您不允許在AIR for iOS中加載其中包含任何代碼的SWF。 蘋果公司禁止這樣做。
在為iOS編譯時,最多只能將swf用作圖形/資源庫。 如果里面的動畫片段具有stop(); 在其中一個框架上,則在引擎蓋下計為“ addFrameScript()”,這意味着SWF包含ActionScript。
我建議如果您需要這樣的功能,請創建一個預定義行為的列表以將其編譯到您的主應用中,然后根據要從SWF庫實例化的資產的類型或名稱來運行這些行為,並在運行時將其附加。
此外,如果您這樣做是為了允許更新-或具有在發布后修改應用程序的能力,那么您也可以將其編譯到發布版本中,並在下次要更新該應用程序時重新發布。 這將在一定程度上幫助您在應用商店中排名,並消除許多版本控制問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.