1

(仅限 ActionScript 2)

我的网站是一个 SWF,它通过 PHP 从 MySQL 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 - 如何我根据它们包含的文本长度调整每个项目的持续时间

非常感谢您的帮助!

4

1 回答 1

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++;
}

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

于 2013-05-17T01:42:02.533 回答