| |||||||
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: Sep 2006
Beiträge: 620
| Dynamische Bilder im ItemRenderer darstellen
Hallo zusammen. Ich ärger mich nun schon gut 2 Stunden mit dem (wahrscheinlich kleinen) Problem rum und finde einfach keine Lösung für folgendes Problem: Ich möchte in einem DataGrid Bilder entsprechend meiner Suchergebnisse anzeigen lassen. Der ItemRenderer ist in einem Paket angelegt und auch der Spalte korrekt zugewiesen. Allerdings schaffe ich es nicht ein Bild zur Laufzeit zu laden. Mit "Embed"-Bildern die als Class deklariert werden klappt es einwandfrei. Daher glaube ich, dass mir in meiner Deklaration für das Bild etwas fehlt wo ich einfach nicht drauf komme... Anbei mal die ItemRenderer-Klasse: PHP-Code: Kann mir jemand weiterhelfen und mir sagen wie ich das Bild vor der setData()-Funktion deklarieren muss? Danke schonmal. MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.146
|
Wieso werden manche Klassen klein geschrieben? Versuch's mal so. Code: package
{
import mx.containers.VBox;
import mx.controls.Image;
public class ImageRenderer extends VBox
{
private var _image:Image;
override public function set data(value:Object):void
{
super.data = value;
invalidateProperties();
}
public function ImageRenderer()
{
}
override protected function commitProperties():void
{
super.commitProperties();
_image.source = data ? data.vorschaubild : data;
}
override protected function createChildren():void
{
super.createChildren();
if (!_image)
{
_image = new Image();
_image.trustContent = true;
_image.scaleContent = true;
addChild(_image);
}
}
}
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Vielen Dank! Es funktioniert soweit ich sehen kann. Ich habe zwar noch ein Problem damit, dass die Liste beim Scrollen immer auf Index 0 springt, aber das werde ich gleich mal untersuchen. Aber erstmal muss ich das mit der Sicherheits-Sandbox lösen. Die Bilder sollten ja schließlich nicht immer einen Error ausgeben wenn man das Programm im FD debuggt. Wenn ich mich recht erinner habe ich zu dem Thema bereits schon Links... Und die Klassennamen habe ich jetzt alle umbenannt ![]() MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Ich habe jetzt vorerst PHP-Code: Sobald die Eigenschaft nicht gesetzt wurde ( = false) funktioniert es bei mir. MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Irgendwie gibts Probleme mit dem Script von Omega Psi. Ein Hinweis vorweg: von 30 Elementen in meinem DataGrid haben 3 Stk ein 50kB großes Bild was dargestellt werden soll. Wenn ich auf diese Weise ein Bild in meinem DataGrid einblenden lasse und versuche noch weiter nach unten zu scrollen springt der Index immer wieder auf die Zeile mit dem Bild zurück. Wenn ich per Scrollbalken an dem Element vorbeiscrollen möchte hängt sich Flash auf. Sortiere ich mein DataGrid, sodass die 3 Elemente zusammen liegen, werden alle Bilder angezeigt. Beim scrollen friert Flash wieder ein. Muss man bei dem Skript noch irgenwas besonders beachten? Ich hatte schon testhalber die Bilder als Embed eingebunden gehabt. Dort hat das Scrollen funktioniert. MFG Monk Hier noch der Code wie ich das DataGrid definiert habe (der Itemrenderer ist 1:1 übernommen, die Anderen funktionieren einwandfrei) PHP-Code: Edit: anbei noch ein konkretes Beispiel. Dort kann man beobachten, dass man nicht nach unten scrollen kann. PHP-Code: Vielleicht liegt das Problem auch an dem DataGrid selbst?!
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 Geändert von dr monk (27-04-2011 um 15:20 Uhr) Grund: Ergänzung mit einem konkreten Beispiel |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Ich habe noch ein weiteres Problem und finde irgendwie nicht die Ursache gescheige denn die Lösung. Ich verwende den Code von Omega Psi (siehe weiter oben). Ich bekomme es einfach nicht hin über die .as-Datei die Ausrichtung des Bildes zentriert darzustellen. Wo muss ich das denn definieren? MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #7 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.146
|
Hast du dir mal die SWFLoader Stile Code: horizontalAlign="left|center|right" verticalAlign="top|middle|bottom"
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #8 (permalink) | |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Hallo Omega Psi, ja - das habe ich gemacht. Wenn ich in den .as-Dateien meiner ItemRenderer den Wert horizontalAlign="center" an eine instanzierte VBox hänge kommt immer der Error: Zitat:
Ich bekomme immer nur horizontalCenter zur Auswahl gestellt (FlashDevelop). MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 Geändert von dr monk (05-05-2011 um 15:02 Uhr) | |
| | |
| | #9 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.146
|
Es sind Stile, keine Eigenschaften.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Guten Morgen. Das mit den Styles kapier ich nicht in dem zusammenhang. Ich habe mir meine Buchseiten mit "Styles" durchgelesen aber sehe den Zusammenhang von Elementen in DataGrids nicht. Ich habe den Columns in MXML nun den Style "paddingLeft" gegeben und somit "mittig" ausgerichtet. Das tut´s notfalls auch. MfG Monk
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Danke mildesign. Jetzt hat es geklappt ![]() /* Update * Das Problem tritt nur auf wenn der Renderer versucht ein Bild zu laden was es nicht gibt. * Dann müsste man ja eigentlich nur ein Event-Listener hinzufügen der prüft ob das Bild geladen wurde? * Werde das mal nach dem Essen testen - Mahlzeit! */ Es gibt allerdings noch ein Problem mit dem Renderer an sich. Sobald die Bilder im DataGrid angezeigt werden geht die Preformance von Flash in den Keller und hängt sich fast auf (es hängt für mehrere Sekunden). Ich lasse, als modifikation zum Ursprungsscript, noch eingebundene Bilder anzeigen wenn kein Vorschaubild vorhanden ist. Solange das DataGrid nur diese Bilder darstellt ist die Preformance ok. Daher vermute ich, dass das Script vielleicht die externen Bilder ständig nachlädt und somit Flash zum "Fastabsturz" bringt. Allerdings ändert sich das Bild im DataGrid nicht wenn ich das Bild während der Ausführung im Vorschauordner umbenenne... Ich habe mir überlegt ob man vielleicht alle Bilder des DataGrids vorlädt und diese dann als als Array dem Renderer zur Verfügung stellt. Allerdings wüsste ich nicht wie ich das anstellen soll und es gibt (hoffentlich) eine sauberere Lösung?! Anbei mal mein Code wie ich ihn momentan einsetze: PHP-Code:
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 Geändert von dr monk (13-05-2011 um 11:24 Uhr) |
| | |
| | #13 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.146
|
Ja, das Problem wird sein, dass du immer wieder neue BitmapDatas in den Speicher schreibst. Elegante Lösungen kann ich hier nicht posten, weil mir die Zeit fehlt und das auch etwas den Rahmen deiner Probleme sprengt. Letzten Endes musst du dafür sorgen, dass jedes Bild nur 1x geladen wird. Baue dir einen Singleton, der die Bilder lädt und über den du auf die BitmapDatas zugreifen kannst. Die solltest du die aus Loader.content rausziehen, um sie nur einmal(!) im Speicher zu haben.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Sep 2006
Beiträge: 620
|
Ich mal wieder ![]() Ich habe jetzt stundenlang versucht das Problem mit den fehlenden Bildern zu lösen. Erst habe ich versucht ein Singleton zu verwenden damit die Bilder nicht andauernd geladen werden (nach diesem Code). Allerdings kommt dann die Fehlermeldung das die Anzahl der Argumente nicht stimmen würde (wahrscheinlich weil die Klasse als Itemrenderer angegeben ist?!) Dann hatte ich versucht den IOError abzufangen und dann durch eine Bildklasse (noImage) zu ersetzen. Allerdings übernimmt er mir zum einen das Bild nicht und zum Anderen wird nach dem Scrollen im DataGrid immer wieder ein neues Bild erstellt (soweit ich gesehen habe nur von den fehlerhaften?!). Gibt es eine Möglichkeit zu überprüfen ob die Bilder geladen werden konnten und diese bei Bedarf mit einer Bild-Klasse zu überschreiben?! Ich verwende noch den Code aus meinem letzten Beitrag. Allerdings habe ich noch eine Styledefinition hinzugefügt (welche keine Auswirkung auf das Problem haben sollte?!) PHP-Code:
__________________ Flash CS5 / Flex 3 / Flashdevelop / FB 4.6 |
| | |
| | #15 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.146
|
Meine Lösung kann ich nicht in 3 Worten beschreiben. Aber ich werde in den nächsten Tagen ein github Repository publishen, in dem eine Lösung skizziert ist.
__________________ 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 |
| dynamische Größe beim ItemRenderer | kev52 | Flex allgemein | 3 | 26-01-2009 09:55 |
| bilder perspektivisch darstellen | harego | ActionScript 1 | 4 | 02-01-2008 10:25 |
| Bilder untereinender darstellen | dydu | ActionScript 1 | 8 | 11-09-2006 16:13 |
| Bilder im Datagrid darstellen | Funzel | Komponenten und SmartClips | 5 | 17-07-2006 18:45 |
| dynamische Linie gestrichelt darstellen | faelkson | ActionScript 1 | 5 | 09-01-2006 17:59 |