OpenFL - 有人可以解释flash.display.Bitmap的__combinedVisible属性

时间:2017-09-25 20:45:46

标签: html5 haxe openfl

我在OpenFL中使用Bitmap作为按钮。我在设置 myBitmap.visible = true 时看到的是位图不可见。





似乎我需要调用 myBitmap .__ CombinedVisible = true 以及它的绘制。我找不到关于如何正确使用它的这个属性的任何文档。





我也注意到我第一次在两个位图之间切换时位图变得可见不会马上出现,但看不见的那个会立即消失。在此之后的任何时候它都表现正常并且切换会立即发生。





这可能与 __ CombinedVisible 有关吗?

&# xA;


您可以在我的按钮内看到下面的位图切换代码。




  private function update():Void {&# XA; 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 之前,可见为false,似乎需要使用此 __ combinedVisible 成员。如果我在设置 BitmapData 之后立即执行此操作,它仍然需要这个。





如果我让位图绘制1帧,则将 visible 设置为 false visible = true 在这种情况发生后工作,我现在可以看到位图。





但如果它没有绘制一次,那么可见= true 不显示位图。





我不能以这种方式创建空位图并稍后分配 BitmapData 吗?它适用于up状态,因为我从未在第一次绘制之前设置 visible = false




1 个答案:

答案 0 :(得分:0)

好的,经过大量的测试并试图让它发挥作用,它就不会。

此处存在一个错误,如果在将位图绘制到画布之前将visible设置为false,则在__combinedVisible设置为true之前不会绘制它。这在第一次绘制位图时总会引起闪光,因此无法使用。

我去了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"));
    }
}