gotoAndPlay / gotoAndStop不使用数字框架标签

时间:2011-08-17 16:14:39

标签: flash actionscript-3 flash-cs4 flash-cs5 flash-cs3

由于我无法控制的原因,我目前正在处理一系列具有数字框架标签的Flash文件。这会导致问题,因为在使用gotoAndPlay / gotoAndStop时,Flash似乎将字符串视为与整数相同。

截图:

screenshot

例如,gotoAndPlay('96')实际上不会转贴标签为“96”的帧,而是gotoAndPlay帧#96。

目前,似乎唯一的解决方案是手动确定每个标签所依赖的帧,因此我会使用gotoAndPlay('96')而不是gotoAndPlay(718)。显然,这将是乏味的(有很多帧标签),如果任何编辑需要移动物体,它还需要更改帧数。

有什么想法吗?无论如何强制flash在我忽略的数字框架标签上获取和播放/停止?

1 个答案:

答案 0 :(得分:6)

这对我来说似乎是一个Flash Player错误(或者至少是一个设计缺陷)。但是你应该可以在MovieClip上使用currentLabels属性,它会为你提供一组FrameLabel个对象。然后使用它在帧标签数字字符串和实际帧编号之间创建自己的映射。

以下是我所谈论的一些示例代码:

var label : FrameLabel;
var mapping : Object = {};

// Create a mapping between frame label string (regardless of semantics)
// and the frame number that it corresponds to.
for each (label in myMovieClip.currentLabels) {
  mapping[label.name] = label.frame;
}


/**
 * Your own version of gotoAndPlay for labels, which will look into your
 * recently created mapping and play the right frame (by number) for the
 * given frame label.
*/
function gotoAndPlayLabel(label : String) : void
{
  myMovieClip.gotoAndPlay( mapping[label] );
}

然后,您将使用自己的gotoAndPlayLabel()函数按标签跳转(并播放)一个帧。