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

pro*_*ism 2 flash actionscript-3 flash-cs3 flash-cs4 flash-cs5

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

截图:

截图

例如,gotoAndPlay('96')实际上不会使用标签"96"转到帧,而是转到#96帧.

现在,似乎唯一的解决方案是手动找出每个标签所依赖的帧,所以不要使用gotoAndPlay('96')我会使用gotoAndPlay(718).显然,这将是繁琐的(有很多帧标签),如果任何编辑需要移动东西,它还需要更改帧数.

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

ric*_*son 6

这似乎是一个Flash Player错误(或至少是一个设计缺陷)给我.但是你应该能够使用currentLabelsMovieClip上的属性,它将为你提供一个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] );
}
Run Code Online (Sandbox Code Playgroud)

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