网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 网管学堂 > 多媒体 > Director > 使Director创作过程自动化  

使Director创作过程自动化

2007-09-22  作者:bitsCN整理  来源:网管学堂  点评 投稿 收藏

原作:Danny Kodicek 翻译:Atla 出处:奥古多媒体
原始地址:http://www.director-online.com/accessArticle.cfm?id=1011
  
  很多人都没有觉察到在工作中用Lingo去自动操作一些冗长乏味的任务能够为他们省下多少时间。为CAST成员重命名,调整物体大小,更改文本和剪切位图是一些我们不需要花一点脑细胞但每天不得不用大量时间去做的任务。写一个快速创造的脚本能节省很多工作。我将给你们看如何写这些简单的脚本和有用的Lingo命令。我们也简要的看看Score记录,另一个非常大的特点,它能使你通过Lingo去做创造来改变Score。
  
  基础

  让我们从简单的事情开始。我们假设 你的基本按钮的行为被设为:在普通状态为''PLAY'',当rollover时为''play roll'',当按下时的状态为''play down'',但是你的设计师给了你300个以"play", "play_roll" 和"play_down" 为模型命名的新按钮文件。你可以改变属性,但在电影中已经有了大量的其他按钮,而且你也不想冒破坏现有代码的危险,所以你决定把新按钮都改名以适应你计划。手工去做这个简直就是一场恶梦,所以通过Lingo去做似乎就像一个理想的瞬间。
  
  让我们在一个脚本里做第一次偿试。

中国网管论坛bbs.bitsCN.com

  
on renamebuttons
  repeat with j = 1 to the number of castlibs
    repeat with i = 1 to the number of members of castlib j
      mem=member (i, j)
      nm=mem.name
      repeat with k = 1 to nm.length
        if nm.char[k] = ''_'' then put '' '' into nm.char[k]
      end repeat
      mem.name=nm
    end repeat
  end repeat
end
  
  一旦你在电影脚本中进入了这个程序,你所要做的只是打开信息窗口并输入:
  
  renamebuttons
  
它会很相当清楚的知道它要做什么。它通过循环检查CASt(演员)库中的的每一个演员,检查每一个CAST成员的名字看是否包含有 一个underscores,如果有替换成一个空格。
  
  现在,它工作得很好,但是有一些危险存在。这其中最重要的便是在你的cast 库中如果有任何其他的cast成员碰巧也有underscores,那么,他们也会被改名。这可能是个大问题。所以相应的,我们要限定自己以操作那些表中被我们选中的CAST成员。我们也将会做有效的小的方面的名字改动通过offset function(移位函数)功能,(但不会是很大的变动的) 网管下载dl.bitscn.com
  
  要想在单个已选择的CAST成员上操作,我们能利用cast库的选择特性。这个返回一个目录:[[1,4],[6,8]] 的意思是当前的第1,2,3,4,6,7,8CAST成员被选中。只从安全的角度来讲,我会做一个功能用来只对一个CAST库中操作。这么做是因为可能在其它的CAST库中有被选中的CAST
  成员而你却并不感兴趣。这里是新的处理方法:
  
 on renamebuttonsbylib lib
   
  if voidp (lib) then lib= the activecastlib
  s=castlib (lib).selection
  repeat with lyst in s
    repeat with i = lyst[1] to lyst[2]
      mem = member (i, lib)
      nm = mem.name
      off = offset (''_'', nm)
      if off <> 0 then put '' '' into nm.char[off]
      mem.name=nm
    end repeat
  end repeat
    
end
  
  运行这个,你需要传给它一个CAST库的名字或是编号,例如:
  
  renamebuttonsbylib "buttons"
  
  这个脚本运行时通过库中的所有的已选择的CAST成员并且根据需要来更改名字。你也应该注意到,我包含了一条使用缺省activecastlib(动态成员库)变量的线,这就是说如果你不传给计算表一个参考,它将默认的寻找最近的选择。
网管论坛bbs_bitsCN_com

  
  这个基本的技术使你可以自动操作任何大量的不同任务。这里有一个使用位图Lingo把所有32位的位图转换成16位的例子,保留了注册点:
  
  on transformbitmaps lib
  
  if voidp (lib) then lib= the activecastlib
  s=castlib (lib).selection
  repeat with lyst in s
    repeat with i = lyst[1] to lyst[2]
      mem = member (i, lib)
      if mem.type <> #bitmap then next repeat
      im = mem.image
      if im.depth = 32 then
        im2=image (im.width, im.height, 16)
        im2.copypixels (im, im.rect, im.rect)
        reg = mem.regpoint
        mem.image = im2
        mem.regpoint = reg
      end if
    end repeat
  end repeat
  
end
网管联盟bitsCN@com

网管联盟bitsCN@com


TAGs   自动化   过程   创作   repeat   if   一个   end   then   成员   lib      
 上一篇:Director制作具有Win XP 风格的菜单   下一篇:Director制作显示日期效果
使Director创作过程自动化 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: