Как убрать символ Unicode в ActionScript 3 AS3 - PullRequest
0 голосов
/ 27 октября 2011

У меня проблема с "&".

По сути, мне не удалось избежать этого правильно во 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>

А затем в области Flashvars:

so.addVariable("homeText", fixed);

Затем во Flash:

unescape(homeTitle);

Woot!

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

Попробуйте unescape(homeTitle), поскольку выход из него - это обратный путь.

пример: trace(unescape("%26")); //will trace out: &

1 голос
/ 29 октября 2011

Эта строка показывает, что вы загружаете флэш-переменные.

homeTitle = this.loaderInfo.parameters.homeText;

Например, если у вас есть такой URL-адрес.

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

Есть 3 переменные, передаваемые во флэш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

И тогда, конечно, во флэш-памяти unescape () будет идеальным.на мне, что данных там нет.

...