#12003/8/9 11:35:44
只是想为多媒体的发展尽一份力。以下是翻译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句柄。那个属性在电影事件开始前就被指定了。
编辑历史:[这消息被alalala编辑过(编辑时间2003-08-09 11:46:41)]