flash动作脚本2.0提取数组项

时间:2012-12-05 17:21:13

标签: actionscript-2

(仅限ActionScript 2)

我的网站是一个SWF,它通过PHP加载来自MySQL DB的用户请求数据。 掌握整个沟通过程我没有问题。

在主页上,以及已经在页面右侧部分显示的新闻,我希望在左侧部分显示所提供基本服务的一些提醒,以及注册用户访问网站时必须采取的强制措施

DB返回:带|的数组分隔符和数组项的总数。

在Flash中,我使用以下函数来获取数组:

remindersFct = function () {
          var myReminders = new LoadVars();
          myReminders.identity = "reminders";
          myReminders.onLoad = function(ok) {
                    if (ok) {
                                   _root.reminderFld.html = true;
                                   var myArray:Array = new Array(myReminders.mydata.split("|"));
                                   myArray.length = myReminders.totalItems;
                    }
                    else {
                                   stop();
                    }
          };
          myReminders.sendAndLoad("misc.php",myReminders,'POST');
};
remindersFct();//start the process

我想知道不同的事情......:

1 - 如何将这个数组“爆炸”到不同的项目中(所有这些都是文本字符串) 2 - 然后,我如何告诉SWF在相应的htmlText字段中一个接一个地显示它们 3 - 如何根据其中包含的文本长度调整每个项目的持续时间

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

嗯,你已经列出的那条线     var myArray:Array = new Array(myReminders.mydata.split(“|”)); 会将字符串分解为数组。至于显示器,我建议你使用for..in语句,如

for(x in myArray){
    myDynamicTextField.htmlText += (myArray[x] + "<br>");
}

请注意,因为for..in经常反向迭代,所以你可能想先做myArray.reverse()。

至于持续时间,这有点难以破解。上面的代码将文本全部放在一起 - 您可能需要设置一个计数器,并为下一个文本插入之前剩余的帧数设置一个计时器,如:

_root.x = 0;
_root.timer = 5; //frames

进行设置,然后进入onEnterFrame:

_root.timer--;
if(_root.timer == 0){
     myDynamicTextField.htmlText += (myArray[_root.x] + "<br>");

     if(_root.x >= myArray.length-1){
        delete this.onEnterFrame; //clean up
     } else {
        _root.timer = ... //put whatever value should go here depending on the length of myArray[_root.x]
     }
     _root.x++;
}

希望这应该有效。祝你好运!