Archive for January, 2008

有用的formatString,支持Actionscript1.0

有用过C#, C/C++, PHP的人都应该知道string.Format或者printf吧! 下面我们让AS也有这样的功能. 什么? 没听说过 ... 拖出去TJJ ...

 
var formatString = function(m)
{
  if (m.indexOf("{")==-1) return m;
  var r="",n="";
  for(var i=0;i<m.length;i++)
  {
    if (m.charAt(i)=="{")
    {
      i++;
      for(n="";m.charAt(i)!="}";i++)
        n+=m.charAt(i);
      if (isNaN(parseInt(n)))
      {
        r+="{";
        i-=n.length+1;
        continue;
      }
      i++;
      r+=arguments[parseInt(n)+1];
    }
    r += m.charAt(i);
  }
  return r;
};
 
/* usage:
var model = "<font size='{2}'><b>{0}</b>+<b>{1}</b>=<b>{0}</b></font>";
var str = formatString(model, 100, 0, 9);
trace(str);
// output: <font size='9'><b>100</b>+<b>0</b>=<b>100</b></font>
*/ 就这么简单, 如果觉得不爽, 你可以继续使用:
var str = "<font size='"+9+"'><b>"+100+"</b>+<b>"+0+"</b>=<b>"+100+"</b></font>";
trace(... 狂呕中 ...
 

顺便说一句: 函数体不用修改, 直接拿到html里当Javascript使, 也可以

瘦版的Delegate,支持Actionscript1.0

 Actionscript 2.0 内置了mx.utils.Delegate的类, 用法就不说了, 自己查查Google, 写了个瘦版的, 经测试可以支持Actionscript 1.0 ...

 
var fns = [];
var delegate = function(o, f)
{
    var i = fns.length;
    var fn = function(){ fns[i].f.apply(fns[i].o, [arguments,this]); };
    fns[i] = {o:o, f:f};
    return fn;
}
 
/* usage:
var onStart = function()
{
    trace(this);
};
 
btn_start.onRelease = delegate(this, onStart); // output: _level0
//btn_start.onRelease = onStart; // output: _level0.btn_start
*/
 

为什么说是廋版的呢, 其实就是编译后的文件小了一些, 看数据:

使用 mx.utils.Delegate, 文件大小会增加841 byte, 使用上面的代码, 文件大小只增加379 byte, 瘦了462 byte, 相当于小了一半多, 如果算上调用语法所占的大小, 应该不只少462 byte.虽然按字节数来说, 瘦得不多, 可是大家都知道积少成多的道理, 环保呀 ...

老树开新花-T42安装Leopard

最近经常看到Leopard的漂亮界面,难免有些心动,可怜的T42本本又要被我折磨了... Read more »

很酷的音乐电子玩具

 一种叫BeatBearing的音乐玩具,简单,有趣... Read more »

使用Secure修复Grub

我的本本是Windows+Suse双系统, 使用Grub引导, 在windows下用磁盘工具改变分区后, Grub提示Error: 15, 手头上有Windows和Suse的光盘... Read more »

让WordPress的Dashboard干净起来

在WordPress管理面板Dashboard页面, 有WordPress Development Blog和Other WordPress News两个栏目, 不知道你有没有看我, 反正我是觉着碍眼, 下面我们就来干掉它... Read more »