Flex 4:获取按下的对象

Flex 4: Get the pressed object

我的皮肤:

<s:DataGroup id="view1" width="100%" height="100%" itemRenderer="views.itemRenderers.BrickItemRenderer" dataProvider="{hostComponent.createArray()}">
    <s:layout>
      <s:TileLayout /> 
    </s:layout>
  </s:DataGroup>

创建对象的我的视图'bricks'

[Bindable]
    public function createArray():ArrayCollection
    {
      var dataBrick:ArrayCollection = new ArrayCollection();  
      var data:DataAboutBrick;
      for (var x:int = 0; x < 5; x++)
        for (var y:int = 0; y < 7; y++)
        { 
          data = new DataAboutBrick();
          data.x = 0;
          data.y = 0;
          data.color = colorBrick;
          dataBrick.addItem(data);
        }      
      return dataBrick;
    }

Class DataAboutBrick 用于保存有关对象的数据:

public class DataAboutBrick extends Object
  {
    public function DataAboutBrick()
    {
      super();
    }

    public var x:int;
    public var y:int;
    public var color:uint = 0xFF0000;
    public var id:String;
  }

调解员:

private function btnBricknew_clickHandler(event:BaseBrickEvent):void
{      
  view.colorBrick = model.currentColor;
}

Mediator 在单击对象时更改所有对象的颜色。并且只需要改变被压物体的颜色即可。

假设您定义了 Brick 和 BrickSkin,您可以在 BrickItemRenderer 中定义更改颜色的功能,如下所示:

<?xml version="1.0"?>

<spark:DefaultComplexItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:spark="spark.skins.spark.*">
<fx:Script><![CDATA[
    [Bindable("dataChanged")]
    override public function set data(value:Object):void
    {
        super.data = value;
        var brick:Brick = new Brick();
        brick.colorBrick = value.color;
        brick.addEventListener(MouseEvent.CLICK, brickClicked,false,0,true);
        this.addElement(brick);
    }

    private function brickClicked(event:Event)
    {
        event.stopImmediatePropagation();
        event.preventDefault();
        data.color = 0x00FF00;// Please make sure your color variable defined in DataAboutBrick.as is Bindable.
    }
    ]]></fx:Script>
</spark:DefaultComplexItemRenderer>