【Director教程】制作控制精灵的blend行为

4/7/2006来源:Director教程人气:9986

(只是想为多媒体的发展尽一份力。以下是翻译director online 上的一篇关于制作控制blend行为的文章,觉得简单有用,所以给大家共享。动机单纯。-------alalala)


  我试着想写一个行为。当鼠标移到一个精灵上时,我希望另一个精灵能够改变它的混合值(blend),是特定的下一个通道的精灵。我在指定具体通道号的时候能够实现这个效果,但我不知道如何做一个行为,这样我只需从库中调用。
  一个非常好的问题!我始终倾向于避免写的代码过于局限。让我们来合计一下你所需要的。我们先假设你的行为默认状态下对下一个通道产生作用(the sPRite+1)。这会使代码容易编写。

  我们将创建一个属性来保留受影响的精灵的参数。我把它叫做pblendsprite,并且我将它写在beginsprite句柄中。


property pblendsprite

on beginSprite me
set mySprite = the spriteNum of me
set pBlendSprite = mySprite + 1
end

on mouseEnter
set the blend of sprite pBlendSprite to whatever
end

  很容易,不是吗?让我们在这个基础上再进一步。让我们来制定它在默认状态下是针对下一个精灵,但是,它可被编辑改变。这是一个小窍门。在上边的行为中我们并不知道具体的精灵编号,直到电影运行,beginsprite事件激发。但是,如果我们希望默认的数字显示在getpropertiesdescriptionlist对话框中,我们需要立即得到这个数值----在我们将这个行为赋予精灵的时候。

  这个诀窍在于使用\"the currentspritenum\"。查一下lingo字典的详细资料。这个属性返回的任何在最近的事件中的精灵通道号。很明显,将行为赋予精灵也是事件(??不知这里对不对)。这对我们是一件好事,因为我们要得到精灵的通道号(然后再加1)


property pBlendSprite

on getPropertyDescriptionList
set blendSpriteNum = the currentSpriteNum + 1
set p_list = [#pBlendSprite: [ #comment: \"Which Sprite blends?:\",_
#format:#integer,#default: blendSpriteNum]]
return p_list
end

on mouseEnter me
set the blend of sprite pBlendSprite to whatever
end

on mouseLeave me
set the blend of sprite pBlendSprite to 100
end

  注意,在这个行为中,并没有用到beginsprite句柄。那个属性在电影事件开始前就被指定了。