Flashhilfe.de - Flash Community

new Image() => NavigatorContent zuweisen & Funktion zuweisen [Flex 4]

 


AntwortenRegistrieren Seite1  

Celeritas#1
Benutzerbild von Celeritas
Beiträge: 6
Registriert: Sep 2011

25.09.2011, 12:46

Hallo zusammen,

 
Habe schon Stunden im Netz gesucht, aber finde leider keine brauchbare Lösung.

Ich habe folgendes Problem:

Ich lade Informationen zu Bildern aus XML.  Die Bilder werden mit addElement geladen, aber leider
schaffe ich es nicht sie einem NavigatorContent zuzuweisen. Im Moment werden die Bilder über der Anwendung erzeugt.

Zudem habe ich noch ein Problem mit einem EventListener. Ich will durch Klicken auf das erzeugte Image eine Funtion aufrufen, diese selektiert mir den passenden Index in einer Dropdownlist.

Ich bekomme folgenden Fehler:

1067: Implizite Umwandlung eines Werts des Typs void in einen nicht verwandten Typ Function.   

Für jeden Lösungsansatz wäre ich dankbar.

Celeritas



ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
         public function muenzen_laden():void{
              var src:String;
              var x:int;
              var y:int;
              var width:int;
              var height:int;
              
              for(var i:int=0; i<=16; i++){
                 src=_xmlData.zwei_euro.muenze[i].src;
                 x=_xmlData.zwei_euro.muenze[i].x;
                 y=_xmlData.zwei_euro.muenze[i].y;
                 width=_xmlData.layout.width;
                 height=_xmlData.layout.height;   
                 
                 var bild:Image = new Image();
                 bild.source=src;
                 bild.x=x;
                 bild.y=y;
                 bild.height=height;
                 bild.width=width;
                 bild.addEventListener(MouseEvent.CLICK,muenze_auswahl(i));
                    
                 this.addElement(bild);
              }


ActionScript:
1
2
3
4
         public function muenze_auswahl(index:int):void
         {
              drop_land.selectedIndex=index;
           }
Geändert von Celeritas am 25.09.11 um 12:48 Uhr
f0rml3ss#2
Benutzerbild von f0rml3ss
Beiträge: 447
Registriert: Mar 2008

25.09.2011, 13:18

Deine Funktion muenze_auswahl gibt eben nur den Wert void zurück; Wenn du den EventListener verwendest, dann wird aber Function erwartet.

Nutze daher Event und currentTarget

ActionScript:
1
2
3
4
5
6
7
8
var bild:Image = new Image();
bild.index = i;
///...
bild.addEventListener(MouseEvent.CLICK,muenze_auswahl);

public function muenze_auswahl(e:Event):void{
     drop_land.selectedIndex=(e.currentTarget as Image).index;
}
Adobe AS3.0 Stichwortverzeichnis
Geändert von f0rml3ss am 25.09.11 um 13:19 Uhr
Celeritas#3
Benutzerbild von Celeritas
Beiträge: 6
Registriert: Sep 2011

Themenautor/in

25.09.2011, 13:50

Hi,

vielen Dank für deine Antwort. Die Vorgehensweise erscheint mir logisch, aber wie muss ich jetzt index=i definieren?

Fehler:

1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft index über einen Verweis mit statischem Typ mx.controls:Image   

Hat jmd. vielleicht noch eine Idee wie ich das Problem mit NavigatorContent lösen kann?

Hab eich das Problem verständlich geschildert?

Vielen Dank

Celeritas
Geändert von Celeritas am 25.09.11 um 13:58 Uhr
f0rml3ss#4
Benutzerbild von f0rml3ss
Beiträge: 447
Registriert: Mar 2008

25.09.2011, 15:00

Ist Image eine von dir erstellte Klasse?

Wenn ja, musst du nur dieser Klasse eine neue Eigenschaft verpassen - eben "index" oder "nr", etc

ActionScript:
1
2
3
4
5
6
//den loop hast du ja schon
for(var i:int=0; i<=16; i++){
  //
   var bild:Image = new Image();
     bild.index = i; //index musst du jedoch auch erst in der Klasse definiert haben; sonst kommt eben der Fehler
}


Zur Beschreibung deines Fehlers:
Du hast eine Klasse mit bestimmten Eigenschaften; zB: source, x,y,...
index ist jedoch keine Eigenschaft dieser Klasse - deswegen müssen wir diese Klasse um diese Eigenschaft erweitern.


ODER:

Du nimmst die Objekt-Klasse
Adobe AS3.0 Stichwortverzeichnis
Celeritas#5
Benutzerbild von Celeritas
Beiträge: 6
Registriert: Sep 2011

Themenautor/in

25.09.2011, 16:50

Hi,

nein die Image Klasse wurde nicht von mir erstellt, sondern ist in der Klassenbibliothek vorhanden.

Hier ein kleines Beispiel

Ich gehe doch richtig in der Annahme, dass ich die Image Klasse nicht ändern sollte, sonst bekommen die Anwender später Probleme wegen ihrer Klassenbibliothek ( Flash Player).

Bitte helft mir, die Zeit rennt mir davon :(

THX für die Lösungsansätze.

Gruß

Celeritas
Geändert von Celeritas am 26.09.11 um 18:31 Uhr
Celeritas#6
Benutzerbild von Celeritas
Beiträge: 6
Registriert: Sep 2011

Themenautor/in

26.09.2011, 18:32

Hat niemand eine Lösung?
Geändert von Celeritas am 26.09.11 um 18:32 Uhr
Sebastian#7
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

26.09.2011, 22:20

Du könntest eine Klasse erstellen:
ActionScript:
1
2
3
4
5
6
public class MyImage extends Image
{
      public var index:uint:
 
      // ....
}

Dann statt Image einfach nur die MyImage Klasse nutzen.

Ein anderer Weg ist Du benutzt die Variable data um Deinen Index darin zu speichern. Dies geht allerdings nur noch bei der mx Componente da sie in spark entfernt wurde. Alternativ kannst Du das name Attribut dafür hernehmen.

Grüße,
Sebastian
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil
Celeritas#8
Benutzerbild von Celeritas
Beiträge: 6
Registriert: Sep 2011

Themenautor/in

27.09.2011, 00:18

Super, hat geklappt.

Vielen Dank.

Wie kann ich jetzt die Bilder einem NavigatorContent zuweisen.

Also ich habe mehrere Bilder die in verschiedenen Tabs geladen werden sollen, bis jetzt werden die noch über meiner Anwendung erzeugt.

Beste Grüße

Celeritas
Sebastian#9
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

27.09.2011, 12:47

Du kommst wahrscheinlich aus der Flash-Ecke und bist mit Flex noch nicht vertraut? In Flex benutzt man die Layout Komponenten zum Anzeigen und Layouten. Das eigentliche abbilden Deiner Daten wird dann ggf. mit einem ItemRenderer beeinflusst. Etwas wie:
ActionScript:
1var bild:Image = new Image();

schreibt man eher selten in AS. Dies würde man über MXML abbilden.

Schau Dir mal die Tuts auf "Flex in a Week" an. Diese sind wirklich sehr hilfreich und erleichtern dir den Einstieg. Wenn Du dies gemacht hast solltest Du dir unbedingt Tour de Flex installieren. Damit bekommst Du eine gute Übersicht der verfügbaren Komponenten und dessen Verhalten.

Das Tut: "Exercise 4.1: Passing data to item renderers for display" beantwortet Deine Frage.

<DataGroup> mit einem eigenen ItemRenderer zum Anzeigen der Bilder.
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de