【问题标题】:how to make alpha part of movieClip non-clickable (actionscript starling)?如何使movieClip的alpha部分不可点击(actionscript starling)?
【发布时间】:2013-02-13 20:13:09
【问题描述】:

我正在使用 Starling。 我不知道如何使位图的 alpha 部分不可点击 - 比如说我在中心有一只兔子,周围有 alpha。

首先我嵌入位图:

[Embed(source="assets/stuff.xml", mimeType="application/octet-stream")]public static const Axml:Class;
[Embed(source="assets/stuff.png")]public static const Apng:Class; 

然后创建位图图集(spritesheet):

var tx1:Texture = Texture.fromBitmap(new Apng());
var xm1:XML = XML(new Axml());
var atlas:TextureAtlas = new TextureAtlas(tx1, xm1);

我制作了一个 MovieClip 并像这样添加位图:

var movie:MovieClip = new MovieClip(atlas.getTextures("rabbit_run_"), 18);
addChild(movie);
movie.play();


starling.core.Starling.juggler.add(movie);

但是当我点击它时,即使在 alpha 部分上,movieClip 也会变成“点击”。 我只需要 兔子本身 是可点击的,而不是在它周围!

如何使 alpha 不可点击?谢谢

【问题讨论】:

    标签: actionscript air flash-builder flashdevelop


    【解决方案1】:

    1:您不能使图像在一个区域可点击而在另一区域不可点击。但是您可以在鼠标下获得像素颜色并忽略透明像素上的 ckicks

    import flash.events.MouseEvent;
    import flash.display.BitmapData;
    
    var rabbitBitmap:BitmapData = new BitmapData(rabbit.width, rabbit.height, true, 0xFFFFFFFF);
    rabbitBitmap.draw(rabbit);
    
    addEventListener(MouseEvent.MOUSE_MOVE, mmh)
    rabbit.addEventListener(MouseEvent.CLICK, mch)
    rabbit.buttonMode = true;
    
    function mmh(e:MouseEvent):void {
      rabbit.useHandCursor = getAlpha() != 255;
    }
    
    function mch(e:MouseEvent):void {
      if (getAlpha() != 255) {
        // ... do someth
      }
    }
    
    function getAlpha ():int {
      var rgba:uint = rabbitBitmap.getPixel32(rabbit.mouseX, rabbit.mouseY);
      return rgba & 0xff;
    }
    

    2:为你的兔子使用矢量图形:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多