由于我无法控制的原因,我目前正在处理一系列具有数字框架标签的Flash文件。这会导致问题,因为在使用gotoAndPlay / gotoAndStop时,Flash似乎将字符串视为与整数相同。
截图:
例如,gotoAndPlay('96')
实际上不会转贴标签为“96”的帧,而是gotoAndPlay帧#96。
目前,似乎唯一的解决方案是手动确定每个标签所依赖的帧,因此我会使用gotoAndPlay('96')
而不是gotoAndPlay(718)
。显然,这将是乏味的(有很多帧标签),如果任何编辑需要移动物体,它还需要更改帧数。
有什么想法吗?无论如何强制flash在我忽略的数字框架标签上获取和播放/停止?
答案 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()
函数按标签跳转(并播放)一个帧。