我在OpenFL中使用位图作为按钮。当我设置myBitmap.visible = true
时,我看到的是位图不可见。
看来我也需要打电话给myBitmap.__CombinedVisible = true
才能画出来。我找不到此属性有关如何正确使用它的任何文档。
我还注意到,当我第一次在 2 个位图之间切换时,可见的位图不会立即出现,但不可见的位图会立即消失。此后的任何时间它都会正常运行,并且切换会立即发生。
这可能与__CombinedVisible
有关吗?
您可以在我的按钮内看到下面的位图切换代码。
private function update() : Void {
if( state == ButtonState.OVER ){
this.over.visible = this.over.__combinedVisible = true;
this.up.visible = this.down.visible = false;
}else if( state == ButtonState.UP ){
this.up.visible = this.up.__combinedVisible = true;
this.down.visible = this.over.visible = false;
} else if( state == ButtonState.DOWN ){
this.down.visible = this.down.__combinedVisible = true;
this.up.visible = this.over.visible = false;
}else if( state == ButtonState.CLICK ) {
this.up.visible = this.up.__combinedVisible = true;
this.over.visible = this.down.visible = false;
this.enabled = false;
dispatchEvent(new Event("CLICK"));
}
}
因此,经过一堆测试,我将其缩小到:如果我在分配BitmapData
之前将visible
设置为 false,则似乎需要使用这个__combinedVisible
成员。如果我在设置BitmapData
后立即执行此操作,它仍然需要这个。
如果我让位图绘制 1 帧,则将visible
设置为false
. 发生这种情况后visible = true
工作,我现在可以看到位图。
但是,如果它没有绘制一次,则visible = true
不会显示位图。
我不能以这种方式创建一个空位图并在以后分配BitmapData
吗?它在向上状态下工作,因为我在第一次绘制之前从未设置过visible = false
。
好的,所以经过大量的测试并试图让它工作,它不会。
这里有一个错误,如果在将位图绘制到画布之前将visible
设置为false
,则在将位图设置为true
之前__combinedVisible
不会绘制它。首次绘制位图时,这总是会导致闪光,因此使用起来不可行。
我去用alpha
而不是visible
.这正常工作且符合预期。
如果有人能解决这个问题visible
我会接受这个答案。
private function update() : Void {
if( state == ButtonState.OVER ){
this.over.alpha = 1;
this.up.alpha = this.down.alpha = 0;
}else if( state == ButtonState.UP ){
this.up.alpha = 1;
this.down.alpha = this.over.alpha = 0;
} else if( state == ButtonState.DOWN ){
this.down.alpha = 1;
this.up.alpha = this.over.alpha = 0;
}else if( state == ButtonState.CLICK ) {
this.up.alpha = 1;
this.over.alpha = this.down.alpha = 0;
this.enabled = false;
dispatchEvent(new Event("CLICK"));
}
}