php
  • actionscript
  • 2012-05-24 88 views 0 likes 
    0

    注:我已阅读https://meta.stackexchange.com/questions/128548/what-stack-overflow-is-not/129362#129362将此PHP转换为Actionscript?

    它说:“尝试自己写代码和发布,当你遇到问题你已经尝试了什么。”这是我在这里做的。

    原来的PHP代码:

    $text = "Hello world, I am rainbow text!"; 
    $texty = ''; 
        $colors = array('ff00ff','ff00cc','ff0099','ff0066','ff0033','ff0000', 
            'ff3300','ff6600','ff9900','ffcc00','ffff00','ccff00', 
            '99ff00','66ff00','33ff00','00ff00','00ff33','00ff66', 
            '00ff99','00ffcc','00ffff','00ccff','0099ff','0066ff', 
            '0033ff','0000ff','3300ff','6600ff','9900ff','cc00ff'); 
         $i = 0; 
    $textlength = strlen($text); 
    while($i<=$textlength){ 
    foreach($colors as $key=>$value){ 
        if (isset($text[$i])) { 
         $texty .= "<font color=\"#".$value."\">".$text[$i]."</font>"; 
        } 
        $i++; 
    } 
    $texty = str_replace("> <",">&nbsp;<",$texty); 
    echo $texty; 
    } 
    

    我已经宰杀它归结为:

    var text = "Hello world, I am rainbow text!"; 
    var texty = ''; 
    colors = new Array 
    
    ('ff00ff','ff00cc','ff0099','ff0066','ff0033','ff0000', 
    'ff3300','ff6600','ff9900','ffcc00','ffff00','ccff00', 
    '99ff00','66ff00','33ff00','00ff00','00ff33','00ff66', 
    '00ff99','00ffcc','00ffff','00ccff','0099ff','0066ff', 
    '0033ff','0000ff','3300ff','6600ff','9900ff','cc00ff'); 
    var i = 0; 
    
    var textlength = text.length; 
    var key = ''; 
    var value = ''; 
    while(i <= textlength){ 
    for each(colors as key=>value){ 
        if (text[i] != undefined) { 
         texty .= "<font color=\"#" + value + "\">" + text[i] + "</font>"; 
        } 
        i++; 
    } 
    texty.replace("> <",">&nbsp;<"); 
    //document.write(texty); 
    } 
    

    我一直在测试这个如JavaScript,这就是为什么我有document.write在代码中注释。但是,我仍然无法完成它的工作。我讨厌这么模糊,但是......有人能告诉我我搞错了什么吗?

    +0

    当您尝试运行此为ActionScript会发生什么?如果我们不知道运行时会发生什么,我们不能说错误发生在哪里。你在Flash或Flex项目中使用这个吗?它编译好吗? – halfer

    回答

    1

    事儿跟你的代码,但没有得到你想要做什么。 看看小提琴。

    http://jsfiddle.net/ymutlu/pKCcS/

    这看起来更好......

    http://jsfiddle.net/pKCcS/2/

    张贴代码在这里,万一我删除拨弄链接。

    var text = "Hello world, I am rainbow text!"; 
    var texty = ''; 
    colors = ['ff00ff','ff3300','ff6600','ffff66','00ff99','00ffcc','00ffff','00ccff','0099ff','0066ff','0033ff','0000ff','3300ff','6600ff','9900ff','cc00ff']; 
    var i = 0; 
    
    
    var textlength = text.length; 
    var key = ''; 
    var value = ''; 
    while(i <= textlength){ 
        var t = text.charAt(i); 
    
        if (t!= undefined) { 
         texty += "<font color=\"#" + colors[i%colors.length] + "\">" + t + "</font>"; 
        i++; 
    } 
    } 
    
    texty.replace("> <",">&nbsp;<"); 
    document.write(texty); 
    

    +0

    第二个创建了奇迹并修复了我遇到的重复字符串问题,谢谢! – Dav

    +0

    欢迎您.... – ymutlu

    1

    Actionscript基本上是Javascript的一种方言,因此您可以在Firebug或Chrome的开发人员工具中的交互式shell中测试您的代码。你会得到错误报告。在你的代码

    来看,我可以马上发现了一些错误,有可能是别人太:

    for each(colors as key=>value){ 
    

    这不是一个有效的结构。写为:

    for (var key in colors) { 
        var value = colors[key]; 
    

    这不是有效的语法:

    texty .= 
    

    用途:

    texty += 
    

    这是有效的,但不这样做你所期望的:

    texty.replace("> <",">&nbsp;<"); 
    
    您需要指定返回值:
    texty = texty.replace("> <",">&nbsp;<"); 
    

    很可能有更多...

    +0

    非常感谢,帮助了很多! – Dav

    +1

    'for(var key in someArray){}'有时可能会产生意想不到的结果,因为它可能包含原型链中较高级的元素。更好地习惯'for(var i = 0; i

    相关问题