| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jan 2012
Beiträge: 29
| PropertyChanged-Event wird nicht ausgelöst
Hallo, Ich habe in meiner Model-Klasse viele Daten-Properties, welche alle Bindable sind. Die meisten davon haben getter und setter und sind mit [Bindable] deklariert. Bei diesen Properties funktioniert auch alles. Einige Properties, welche von anderen Werten abhängen, haben jedoch nur einen getter: Code: [Bindable("shapeChanged")]
public function get shape():String
{
return ...;
} Code: dispatchEvent(new PropertyChangeEvent("shapeChanged",
false, false, PropertyChangeEventKind.UPDATE,
"shape", null, shape, this)); |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Die ganze Klasse oder zumindest mehr Code bitte.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jan 2012
Beiträge: 29
|
Alles kann ich leider nicht posten da dies den Rahmen sprengen würde (~1000 Zeilen) Hier ein relevanter Ausschnitt aus der Datenklasse: Code: public class ImageItem extends ItemBase implements IShaped //Leitet indirekt von EventDispatcher ab
{
private var _imageShape:ImageShape;
[Bindable]
public function get imageShape():ImageShape
{
return _imageShape;
}
public function set imageShape(value:ImageShape):void
{
if(imageShape != null)
{
imageShape.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, imageShape_PropertyChanged);
}
_imageShape = value;
if(imageShape != null)
{
imageShape.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, imageShape_PropertyChanged);
}
notifyShapeChanged();
}
[Bindable("shapeChanged")]
public function get shape():String
{
return _imageShape.normalizedPathData;
}
private function notifyShapeChanged():void
{
dispatchEvent(new PropertyChangeEvent("shapeChanged",
false, false, PropertyChangeEventKind.UPDATE,
"shape", null, shape, this));
}
private function imageShape_PropertyChanged(e:PropertyChangeEvent):void
{
if(e.property == "normalizedPathData")
notifyShapeChanged();
}
} Code: private var _shaped:IShaped; //Es handelt sich im Beispielszenario um ein ImageItem
private function register():void
{
_shaped.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, shaped_PropertyChanged);
}
private function shaped_PropertyChanged(e:PropertyChangeEvent):void
{
trace(e.property);
} |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Eventhandler die an imageShape gebunden werden, hören nur auf PropertyChangeEvent.PROPERTY_CHANGE. Dich interessiert aber denke ich ja shapeChanged. Das bedeutet eine Anpassung á la Code: [Bindable("shapeChanged")]
public function get imageShape():ImageShape
{
return _imageShape;
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #6 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Ich hab mal ein einfaches Beispiel zusammen geschraubt. Code: package net.icodeapps.examples.model
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class Person extends EventDispatcher
{
//---------------------------------------------------------------------
//
// Properties
//
//---------------------------------------------------------------------
//-----------------------------
// firstName
//-----------------------------
private var _firstName:String;
[Bindable('firstNameChange')]
public function get firstName():String
{
return _firstName;
}
public function set firstName(value:String):void
{
if (_firstName == value)
{
return
}
_firstName = value || '';
invalidateFullName();
dispatchEvent(new Event('firstNameChange'));
}
//-----------------------------
// fullName
//-----------------------------
[Bindable('fullNameChanged')]
public function get fullName():String
{
return _firstName + ' ' + _lastName
}
//-----------------------------
// lastName
//-----------------------------
private var _lastName:String;
[Bindable('lastNameChange')]
public function get lastName():String
{
return _lastName;
}
public function set lastName(value:String):void
{
if (_lastName == value)
{
return
}
_lastName = value || '';
invalidateFullName();
dispatchEvent(new Event('lastNameChange'));
}
//---------------------------------------------------------------------
//
// Constructor
//
//---------------------------------------------------------------------
public function Person()
{
_firstName = _lastName = '';
}
//---------------------------------------------------------------------
//
// Methods
//
//---------------------------------------------------------------------
private function invalidateFullName():void
{
dispatchEvent(new Event('fullNameChanged'));
}
}
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Jan 2012
Beiträge: 29
|
Ich habe jetzt herausgefunden an was es lag. Beim Feuern des Events benutze ich "shapeChanged". Später registriere ich mich dann allerdings nicht auf "shapeChanged" sondern auf "propertyChanged". Trotzdem danke für dein Beispiel. Ist es eigentlich sauberer für solche Events "shapeChanged" zu benutzen oder wie bei den Default-Bindable "propertyChanged"? |
| | |
| | #8 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Siehe meinen Post#4
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| event:StatusEvent wird nicht ausgelöst | canon | ActionScript 3 | 7 | 18-10-2010 14:39 |
| Event STATE_CHANGE/COMPLETE wird bei Nutzung von flvplayback nicht ausgelöst | mod_x | ActionScript 3 | 1 | 17-02-2009 13:32 |
| Event wird duch andere Instanz des gleich Objektes ausgelöst | green123 | ActionScript 3 | 1 | 12-02-2009 09:36 |
| NetStream.Stop event wird nicht ausgelöst | tentacles | ActionScript 2 | 1 | 28-02-2008 11:08 |