0
My Skin:Flex 4: Holen Sie sich das Pressobjekt
<s:DataGroup id="view1" width="100%" height="100%" itemRenderer="views.itemRenderers.BrickItemRenderer" dataProvider="{hostComponent.createArray()}">
<s:layout>
<s:TileLayout />
</s:layout>
</s:DataGroup>
Meine Ansicht für für gespeicherte Daten über das Objekt Objekt 'Bausteine'
[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;
}
Klasse DataAboutBrick erstellen:
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;
}
Mediator:
private function btnBricknew_clickHandler(event:BaseBrickEvent):void
{
view.colorBrick = model.currentColor;
}
Mediator Farbe ändern alle Objekte beim Klicken auf Objekt. Und muss nur die Farbe des zu drückenden Objekts ändern.
Also, was ist Ihre Frage? Wie bekomme ich den BrickItemRenderer, der innerhalb des Tellelayout geklickt wurde? Ich würde mich von verbindlichen Funktionen fernhalten, die einen Datenprovider zurückgeben, der nach Ärger fragt. Es könnte Fälle geben, in denen Sie plötzlich einen neuen Datenprovider bekommen würden und nicht einmal davon wissen würden. Da Sie über Mediatoren verfügen, erstellen Sie dort den Datenprovider und übergeben Sie ihn ohne Bindung an den View, den MVC-Stil des Klassikers – Philarmon