2011-10-27 22 views
0

我遇到「&」問題。如何在ActionScript 3中忽略Unicode字符AS3

基本上,我一直沒能在Flash AS3正確逃避這個,但是我沒有找到這個鏈接似乎有所幫助: http://www.smithmediafusion.com/blog/?p=343

測試頁: http://touchstormdigital.com/leon/testing/

這裏是我當前的功能:

try { 
    varHome = this.loaderInfo.parameters.home; 
    homeImage = this.loaderInfo.parameters.homeImage; 
    homeTitle = this.loaderInfo.parameters.homeText; // Get the Video Title 
    // Title = "Quick & easy chicken recipes for dinner" 
} catch (e:Error) { 
    varHome = "false"; 
    homeBool = false; 
} 

搜索和替換功能:

// Home player test search & replace ampersand 
private function replaceString(str:String, find:String, replace:String):String 
{ 
    var startIndex:Number = 0; 
    var oldIndex:Number = 0; 
    var newString:String = ""; 

    while ((startIndex = str.indexOf(find, startIndex)) != -1) 
    { 
     newString += str.substring(oldIndex, startIndex) + replace; 
     oldIndex = startIndex += find.length; 
    } 

    return((newString == "") ? str : newString); 
} 

再怎麼我用它

private function drawSplash():void 
{ 
    sp = new ScreenButton(); 

    replaceString(homeTitle,"&", "\\u0026"); 

    sp.drawScreenButton(playerW, playerH, homeBool, homeImage, homeTitle); 
    sp.addEventListener("onPlay", vd.playVideo); 
    sp.addEventListener("embedSplash", hideSplash); 
    stage.addChild(sp); 
} 

我認爲這是問題的所在:

replaceString(homeTitle,"&", "\\u0026"); 

我也試過這樣:

replaceString(homeTitle,"&", String.fromCharCode(38)); 

目標 搶 「快速&易雞肉食譜吃飯」,並顯示它

仍然顯示只是 「快速」

測試頁: http://touchstormdigital.com/leon/testing/


更新!另一個簡單的修復發現,無需更改標題!

除了The_asMan的答案,工作,但需要文本/複製寫入所有的怪異,我發現這個簡單的一段JavaScript代碼,沒有工作:

http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp

我怎麼樣中號使用它:

<script type="text/javascript"> 

    var homeText = "Quick & easy - chicken' recipes for dinner?!=+"; 
    var fixed = encodeURIComponent(homeText); 

</script> 

然後在Flash變量區域:

so.addVariable("homeText", fixed); 

然後在Flash:

unescape(homeTitle); 

活泉!

+0

你試過escape(homeTitle) –

+0

順便說一句,你的測試頁面在我的瀏覽器上顯示效果不錯 –

+0

@The_asMan yup這是我嘗試的第一件事情:(也是我找到了一個修復程序,但它在HTML的一面,&必須寫成%26,所以我仍然在尋找閃存裏的修復程序 –

回答

1

這裏這條線顯示我要加載Flash變量。

homeTitle = this.loaderInfo.parameters.homeText; 

例如,如果你有像這樣的網址。

http://somedomain.com?var1=aa&var2=b&var3=c 

有3個變量傳遞到Flash VAR1,VAR2,VAR3
當你

http://somedomain.com?title=Quick & easy chicken recipes for dinner 

你打破它在2點第一點是告訴閃存那裏的符號是一個新的變量來讀取。另一個點是空格,URL不能有空格。 所以這種編碼的正確方法是

http://somedomain.com?title=Quick%20%26%20easy%20chicken%20recipes%20for%20dinner 

然後當然在Flash中UNESCAPE()將是完美的。

對不起,我應該注意到這一點,它並沒有黎明我的數據不存在。

+0

嘿,謝謝!看起來像另一個修補程序,我必須再次推到前端女孩。我要重命名這個問題,以如何逃避,而不是搜索和替換。 –

2

嘗試unescape(homeTitle)作爲逃避它是你想要相反的方式去。

例如:trace(unescape("%26")); //will trace out: &

+0

看起來像逃脫和unescape使我的標題看起來像「快%20」:(我認爲這是Flash中的一個主要問題 –

+0

謝謝,我錯過了這部分工作的unescape:http:// www .w3schools.com/jsref/jsref_encodeuricomponent.asp –