• 当前位置:首页>>Director教程>>Director综合技巧>>Director 8制作模拟刮胡子演示程序(2)
  • Director 8制作模拟刮胡子演示程序(2)
  • Director 8制作模拟刮胡子演示程序
      下面是真正的核心代码

    通过在响应 exitframe handle 中处理 mouseDown 来复制位图,也就是当鼠标在图形上拖动的时候将鼠标滑过的位置的矩形小区域记录下来,然后从 source 角色中将相应矩形区域的位图部分复制到 target 角色部分相应的位图部分。 on exitframe me
     if (the stillDown) then - 当鼠标一直按下的时候,才开始复制
      thisPoint = the mouseLoc - point(pMySprite.left, pMySprite.top) - 将记录鼠标相对与角色左上角为原点的坐标
      top = thisPoint.locV
      left = thisPoint.locH
      sourceRect = rect (left, top, left + 10, top + 10) -- 定义一个虚拟的小矩形复制区域(从鼠标开始处计算),我们这里采用 10*10 的方块
      member("target").image.copyPixels (member("source").image, sourceRect, sourceRect)
    -- 将从 "source" 角色中复制一个小块到 target 角色中相同坐标区域部分。
     end if
    end

    好了,所有关键程序部分都已经完成了。这里,我们可以简单的通过
    sourceRect = rect (left, top, left + 10, top + 10) 这条语句来容易的改动复制区域的大小和形状, 这比起 flash 从新切割图片来说真是太方便了。
    任何人只要有两张照片文件,都可以很容易的制作这个程序。似乎所有的程序都已经写完了。好像还有些问题,记得我在前面说过任何对图形角色 image 对象的修改都是对原角色成员的修改,我们复制完毕后,两张图形就完全一样了,这样原来的 target (就是未刮胡子的图案)就无法恢复原来的样子了,为了让这个程序可以反复的玩,我们在开始导入角色的时候,曾经将 target 复制为另一个相同的角色。名字是 "s".
    现在我们在这个 director 程序中建立一个 movie script
    在里面键入如下语句
    on startmovie
    member("s").duplicate(2).member.name = "target"
    -- 该语句很简单,就是将 member 角色 "s" 复制到 2 号 角色,然后起名字为 "target"
    end
    这样我们就恢复了 target 角色的本来面貌。
    如下是全部角色,舞台,和 score 安排图:

    图形 (cast.gif)

    在这个程序中,通过使用 director 8 中清晰简捷的 image lingo 代码完成了 flash 做起来很麻烦的操作。这就是 director 在处理图像方面的优势所在。 Flash 在处理适量方面的确是有目共睹的,但是我希望大家能够更多的关注 director 对于位图的处理技术。在不同的场合采用最适合的技术这才是我真正要表达的意图。(完)

    [1]

  • 上一篇:定制能够随意拖动的MIAW
    下一篇:Excel2000和Director8.5亲密接触