代码之家  ›  专栏  ›  技术社区  ›  Gulvan

圆形遮罩的作用类似于矩形

  •  1
  • Gulvan  · 技术社区  · 7 年前

    我尝试使用drawCircle方法绘制的圆:

    private function squareToRound(ability:MovieClip):MovieClip
    {
        var container:MovieClip = new MovieClip();
        var newAbility:MovieClip = ability;
        var newMask:MovieClip = new MovieClip();
    
        newAbility.width = 43;
        newAbility.height = 43;
        newMask.x = newAbility.x + newAbility.width / 2;
        newMask.y = newAbility.y + newAbility.height / 2;
    
        container.addChild(newAbility);
        newMask.graphics.beginFill();
        newMask.graphics.drawCircle(0, 0, 8);
        newMask.graphics.endFill();
        container.addChild(newMask);
    
        newAbility.mask = newMask;
        return container;
    }
    

    ... 作为SWF的资产:

    private function squareToRound(ability:MovieClip):MovieClip
    {
        var container:MovieClip = new MovieClip();
        var newAbility:MovieClip = ability;
        var newMask:MovieClip = new CircleAbilityMask();
    
        newAbility.width = 43;
        newAbility.height = 43;
        newMask.x = newAbility.x + newAbility.width / 2;
        newMask.y = newAbility.y + newAbility.height / 2;
    
        container.addChild(newAbility);
        container.addChild(newMask);
    
        newAbility.mask = newMask;
        return container;
    }
    

    结果是相同的。

    我通过注释“newAbility.mask=newMask;”检查了掩码的外观线

    1 回复  |  直到 7 年前
        1
  •  2
  •   Joshua Granick    7 年前

    这应该在当前的OpenFL版本中解决:

    https://github.com/openfl/openfl/blob/develop/CHANGELOG.md#650-11102017

    您还可以使用Cairo(在本机平台上)或Canvas(在HTML5上)来获得更平滑/更好的掩蔽支持:

    openfl test html5 -Dcanvas
    openfl test windows -Dcairo
    

    当您 bitmapData.draw , sprite.cacheAsBitmap = true 或触发软件渲染而非GL的其他API。