Flashhilfe.de - Flash Community

Probleme bei Texte aus XML dynamisch auslesen [Flash CS4]

 


AntwortenRegistrieren Seite1 2 3 4 5 6 7  

Purgar#77
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

14.01.2011, 08:26

ja das wäre echt cool...denn flash in zusammenhang mit xml stellt für mich oft noch eine große Hürde dar. ich bin für jede Hilfe sehr dankbar. Vorallem, wenn ich sie danach nachvollziehen kann und in Zunkunft damit weiterarbeiten kann. Aber auch deine Version mit den Arrays hat mir schon viel gebracht und ich konnte wieder einiges dazulernen. Thx for that ;-)
Purgar#78
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

14.01.2011, 09:31

ok, ich glaube solangsam habe ich zumindest verstanden, wie man auf die einzelnen "elemente" der xml zugreift..ich will aber nicht auf feste Werte zugreifen, sondern die sollen ja variabel sein. Also wenn ich jetzt alle getYearByName() anzeigen lassen will, die in der xml enthalten sind, was muss ich da tun?
Purgar#79
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

14.01.2011, 15:40

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
var xmlLoader:URLLoader = new URLLoader();
//var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
var stage_size = 0;
var xmlPath:String = "image-scroller.xml";
xmlLoader.load(new URLRequest(xmlPath));
trace("loading xml from: " + xmlPath);
var bildanzeige:MovieClip = new MovieClip;
var dataProvider:Object;
function LoadXML(e:Event):void {
        dataProvider = parseXML(new XML(e.target.data));
       trace(dataProvider);
       trace(dataProvider.getYearByName(""));
       //yearArray = [dataProvider.getYearByName("017").name + dataProvider.getYearByName("010").name];
     //trace(dataProvider.getGalleriesByYearId(1).length)
     var galleries:Array = dataProvider.getYearById(2).getGalleries();
        var years:Array = dataProvider.getYearByName("");
        //trace(dataProvider.getYearByName("2010"));
for each (var gallery:Object in galleries)
  {
       trace(gallery.title);
      trace(gallery.image);
        trace(gallery.getImages().length);
      //trace(gallery.imageItem.src);
}
  for each (var year:Object in years)
  {
       trace(year.name);
     
 
 
  for (var j:uint =0; j< dataProvider.getYearByName.length; j++)
       {
         trace("JAHR" + year.name);
         text_color = 0xFFFFFF;
        Year[j] = year.name;
        trace(Year[j]);
          var thisOne:MovieClip = new MovieClip();
        
         var blackBox3:Sprite = new Sprite();
        blackBox3.graphics.beginFill(0x000000);
        blackBox3.graphics.drawRect(0,0, 200,50);
        blackBox3.alpha = thumbFadeOut;
        blackBox4.visible = true;
        blackBox4.graphics.beginFill(0x000000);
        blackBox4.graphics.drawRect(0,0, 250,500);
        blackBox4.alpha = thumbFadeOut;
        addChildAt(blackBox4, 0);
        
        thisOne.blackBox = blackBox3;
      thisOne.addChild(blackBox3);
         
          //-----------------------------------------------------------------------------------//
      var gallery_text2:TextField = new TextField();
       var gallery_text:TextField = new TextField();
       var Format:TextFormat = new TextFormat();
         
        
           Format.font = "ArialRoundedMTBold";
           Format.size = 18;
         gallery_text2.defaultTextFormat = Format;
        
        gallery_text2.textColor = text_color;
        gallery_text2.selectable = false;
        
        
        gallery_text2.wordWrap = true;
        gallery_text.defaultTextFormat = Format;
        
        gallery_text.textColor = text_color;
        gallery_text.selectable = false;
        
        
        gallery_text.wordWrap = true;
     
        
        gallery_text2.text =Year[j];
        thisOne.Text=gallery_text2;
        
        thisOne.addChild(gallery_text2);
        
        
        
          gallery_text2.textColor = 0xFFFFFF;
          gallery_text2.selectable = false;
          gallery_text2.wordWrap = true;
        gallery_text2.x = blackBox3.width/2.7;
        
        yearArray[j]=thisOne;
        
        
        
        
        gallery_text2.width = 300;
        gallery_text.width = 300;
        
        
        scroller3.addChild(thisOne);
        
        thisOne.buttonMode = true;
     
        
        scroller3.alpha = 0.7;
        scroller3.scaleX = 1;
        scroller3.scaleY = 1;
        scroller3.addChild(thisOne);
        yearArray[j].y = yearArray[j].myy = (30 + padding)* j;
        
  yearArray[j].addEventListener(MouseEvent.ROLL_OVER, overScrollerItem2);
     
 
   
        
        thisOne.buttonMode = true;
         thisOne.mouseChildren = false;
        
        
     
      }
  }
}
   function overScrollerItem2(e:MouseEvent):void {
     
     Tweener.addTween(e.currentTarget, {scaleX:1.2, scaleY:1.2} );
     e.currentTarget.blackBox.alpha =1;
     
     scroller3.alpha =1 ;
     
}


so die Jahre bekomme ich untereinander getraced..also 2010 und 2011..aber wenn ich die nun in den MC thisOne einfügen will, damit die untereinander anzeigbar sind und auch einzeln auswählbar sind, was vorher auch geklappt hat, klappt das jetzt nicht :-(....was mache ich falsch...was muss ich anders machen ;-)
RustyCake#80
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

14.01.2011, 16:47

Muß zugeben, das sich mir das ganze, auch noch nicht so erschließt wie ich dachte.
Hab schon ein wenig damit gespielt, aber an die einzelnen Galerien ("Weihnachten") zb. komm ich auch nicht ran :-(
Vielleicht kann uns "badskill" da schlauer machen ;-)
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
Purgar#81
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

14.01.2011, 16:50

puh, ich dachte schon, ich wäre wieder mal einfach zu blöd ;-)..also ich finde das auch sehr schwierig...
badskill#82
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

14.01.2011, 21:23

Ihr hättet die API um die erforderlichen Methoden erweitern müssen/können.
Ich hab das Teil mal erweitert:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
var model:Function = function():Object
{
     var years:Array = [];
     var galleries:Array = [];
     var images:Array = [];
     
     // siehe addGallery
   var imagesByGallery:Function = function():Array
     {
        var result:Array = [];
        for each (var image:Object in images)
        {
           if (image.galleryId == this.id) result.push(image);
        }
        return result;
     }
     
     // siehe addYear
   var getGalleries:Function = function():Array
     {
        var result:Array = [];
        for each (var gallery:Object in galleries)
        {
           if (gallery.yearId == this.id) result.push(gallery);
        }
        return result;
     }
     
     // siehe addYear
   var getGalleriesByTitle:Function = function(title:String):Array
     {
        var result:Array = [];
        var galleries:Array = this.getGalleries();
        for each (var gallery:Object in galleries)
        {
           if (gallery.title == title) result.push(gallery);
        }
        return result;
     }
     
     return {
        getYearByName : function(name:String):Object {
           for each (var year:Object in years)
           {
              if (year.name == name) return year;
           }
           return null;
        },
        getYearById : function(id:uint):Object {
           return years[id] || null;
        },
        getGalleriesByYearId : function(yearId:uint):Array {
           var result:Array = [];
           for each (var gallery:Object in galleries)
           {
              if (gallery.yearId == yearId) result.push(gallery);
           }
           return result;
        },
        getGalleriesByTitle : function(title:String):Array {
           var result:Array = [];
           for each (var gallery:Object in galleries)
           {
              if (gallery.title == title) result.push(gallery);
           }
           return result;
        },
        getGalleryById : function(id:uint):Object {
           return galleries[id];
        },
        getAllYears : function():Array {
           return years;
        },
        addYear : function(year:Object):void {
           year.getGalleries = getGalleries;
           year.getGalleriesByTitle = getGalleriesByTitle;
           years[year.id] = year;
        },
        addGallery : function(gallery:Object):void {
           gallery.getImages = imagesByGallery;
           galleries[gallery.id] = gallery;
        },
        addImage : function(image:Object):void {
           images.push(image);
        }
     }
}

Beispiele:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// alle Jahre
var years:Array = dataProvider.getAllYears();

// alle Galerien mit dem Titel "Weihnachten"
var galleries:Array = dataProvider.getGalleriesByTitle("Weihnachten");

// alle Galerien mit dem Titel "Weihnachten" von einem bestimmten Jahr
var galleries:Array = dataProvider.getYearByName("2010").getGalleriesByTitle("Weihnachten");
var galleries:Array = dataProvider.getYearById(2).getGalleriesByTitle("Weihnachten");

// alle Galerien eines bestimmten Jahres
var galleries:Array = dataProvider.getYearById(2).getGalleries();
var galleries:Array = dataProvider.getYearByName("2010").getGalleries();
var galleries:Array = dataProvider.getGalleriesByYearId(2);

// eine Galerie mit einer bestimmten Id
var gallery:Object = dataProvider.getGalleryById(3);
Geändert von badskill am 14.01.11 um 21:26 Uhr
RustyCake#83
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

15.01.2011, 02:40

*Ihr hättet die API um die erforderlichen Methoden erweitern müssen/können.*

Ich hätte vielleicht können, nach angemessener Studiums-zeit Deines Scripts, wenn ich die Zeit dazu hätte :-)
Aber Purgar, das hättest Du raus lesen können, das der das nicht (noch nicht) kann ;-)

Aber Danke an der Stelle, für die Erweiterung :-)
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
Purgar#84
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

15.01.2011, 18:13

ui ui....also studieren ist echt das passende wort ;-)...sieht alles sehr complicated aus
Purgar#85
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

15.01.2011, 18:33

so wie bekomme ich es denn jetzt hin, mit dem script, was ich gestern hier gepostet habe, dass die jahreszahlen untereinander angezeigt werden, was vorher ja funtkioniert hat?
badskill#86
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

15.01.2011, 19:16

Ist einfacher als du denkst. ;)
Damit das Skript kurz bleibt, hab ich ein paar Zeilen rausgeschmissen (ebenso die Funktionen parseXML und model). Die musst du wieder nachtragen:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var dataProvider:Object;
function LoadXML(e:Event):void {
      dataProvider = parseXML(new XML(e.target.data));
      buildUI();
}

function buildUI():void
{
     var years:Array = dataProvider.getAllYears();
     for (var i:uint = 0, j:uint = years.length;  i < j; i++)
     {
        var thisOne:MovieClip = new MovieClip();
         
          /*
           blackboxes ...
        */

        
           thisOne.addChild(blackBox3);
        
        /*
           textfelder ...
        */

        
        gallery_text2.text = years[i].name;
        
        // ...
      
        thisOne.addChild(gallery_text2);
        
        // ...
      
        scroller3.addChild(thisOne);
          thisOne.y = thisOne.myy = (30 + padding)* i;
        thisOne.addEventListener(MouseEvent.ROLL_OVER, overScrollerItem2);
        
        // der rest
   }
}
Geändert von badskill am 15.01.11 um 19:16 Uhr
Purgar#87
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

15.01.2011, 19:45

hmmm...danke erstmal..naja so einfach finde ich das echt nicht ;-)...
aber wenn ich jetzt
ActionScript:
1gallery_text2.text = years[i].name;
eingebe
bekomme ich in der ausgabe die meldung, dass ein begriff nicht definiert ist und keine eigenschaft hat...oh man, ich blick da irgendwann bestimmt noch durch...
badskill#88
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

15.01.2011, 19:57

Der Fehler liegt bei mir. Tausche die Methode "getAllYears" in der Funktion "model" mit dieser hier aus:
ActionScript:
1
2
3
4
5
6
7
8
getAllYears : function():Array {
           var result:Array = [];
           for each (var year:Object in years)
           {
              result.push(year);
           }
           return result;
        }
Purgar#89
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

15.01.2011, 20:15

wow, danke erstmal..genauso meinte ich das..coole sache...werde aber bestimmt nochmals auf dich zurückkommen (müssen)..trotzdem erstmal vielen lieben dank..werde mir jetzt erstmal alles genau anschauen und versuchen, dass ganze nachzuvollziehen..denn so wie immer, in erster linie will ich lernen und nicht nur kopieren und einfügen...und badskills hat mir schon einiges beigebracht..genauso wie rusty, der mir arrays und den umgang mit diesen näher bringen konnte mit seinen beispielen..erstmal vielen lieben dank dafür...und der beitrag bleibt noch geöffnet, denn da wird bestimmt noch die ein oder andere frage kommen ;-)..
badskill#90
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

15.01.2011, 20:22

Prima,
dann bis zum nächsten mal. :)
Purgar#91
Benutzerbild von Purgar
Beiträge: 151
Registriert: May 2010

Themenautor/in

16.01.2011, 10:13

und heute ist wohl " das nächste mal" ;-)..ich versuche gerade die images zu laden,...ich dachte das mache ich mit
ActionScript:
1var images:Array = dataProvider.imagesByGallery(1) ;

aber ich bekomme dann immer eine fehlermeldung, dass "imagesByGallery keine function sei" häää?!?!?

AntwortenRegistrieren Seite1 2 3 4 5 6 7  

Schnellantwort

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

 
Ähnliche Beiträge zum Thema
Das Leben geht weiter [Flash CS5] 12.01.2021 - Indy_Crossover
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de