gpt4 book ai didi

flash - Button 内的实例名称有问题

转载 作者:行者123 更新时间:2023-12-04 19:17:44 25 4
gpt4 key购买 nike

我在 Flash 中创建了一个按钮,在其中我有一个 TextField 和一个 MovieClip,两者都设置了实例名称。它们覆盖了按钮的所有 4 帧,没有关键帧。

我发现我无法使用我设置的实例名称访问对象,所以我使用这段代码来查看发生了什么:

var obj:DisplayObject = this.m_graphics.btnChange.upState;
for ( var i:int = 0; i < obj.numChildren; i++ )
{
trace( "We have an object at " + i + " - " + obj.getChildAt( i ) + ": " + obj.getChildAt( i ).name );
var t:TextField = obj.getChildAt( i ) as TextField;
if ( t == null )
continue;

trace( " The textfield has text '" + t.text + "' );
}

我得到这个作为输出:
We have an object at 0 - [object Shape]: instance195
We have an object at 1 - [object TextField]: instance199
The textfield has text 'Change'
We have an object at 2 - [object MovieClip]: instance203

所以他们的 TextField 和 MovieClip 就在那里,他们刚刚将他们的实例名称重置为通用的“实例###”。

有谁知道问题是什么?如果我将按钮设为 MovieClip,它就可以正常工作(尽管我必须自己控制帧)。

我知道我可以使用不同的方法来解决这个问题,但这意味着要改变很多东西,我想知道为什么 SimpleButton 会忽略 Flash 中设置的实例名称

编辑

再深入研究一下,似乎即使 Flash IDE 中的按钮中没有关键帧,Flash 也会为每个项目创建 4 个实例(例如,跟踪 upState 会给我一个带有实例名称的 TextField “instance2”,而在 downState 中,实例名称是“instance4”)。如果我在一种状态下更改文本,它不会反射(reflect)在其他状态中。

我在想,当 Flash 创建对象时,它没有正确复制所有属性(即实例名称)

编辑

我同意 Shane 的答案是一种解决方法 - 我自己说过我知道解决问题的不同方法 - 但它忽略了问题,它没有解决它(这是我没有解决的唯一原因接受了)。我首先来到 SO,看看是否有人可能首先知道为什么会发生这种情况(tbh,这似乎是 SDK 中的一个错误)。

我也理解“你不应该在 SimpleButton 中访问 child ;如果你想要更多的控制,使用 Sprite 或 MovieClip”这一论点背后的推理,但我不同意。 Flash IDE 允许您创建带有命名实例的按钮,SimpleButton 文档允许您访问不同的状态,所以对我来说,这是可以接受的行为。如果 SimpleButton 只能用于非常基本的、不可更改的静态按钮(也考虑本地化),那么它就毫无用处。您可以使用 Sprite 和 MovieClip,但是您必须自己控制不同的状态,这会变得很尴尬。我有自己的 Button 类来处理样板,但我不必重写基本的 SDK 功能,这就是为什么对我来说这是一个错误。

我会在悬赏期间保持悬赏状态。如果我什么都没得到,那我就把它给谢恩。

最佳答案

这是因为 flash.display.SimpleButton 类不是从 DisplayObjectContainer 继承的。 ,并且状态容器也不是 DisplayObjectContainers:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/SimpleButton.html

基本上,简单按钮的定义是简单的。如果您想对内部对象进行更复杂的控制,则必须使用将 buttonMode 设置为 true 的 Sprite 或 MovieClip。

关于flash - Button 内的实例名称有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com