Flashhilfe.de - Flash Community

Wörter zufällig anordnen und ein- und ausblenden [Flash 9]

 


AntwortenRegistrieren Seite1 2  

sadness#1
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

05.08.2011, 13:21

Hallo zusammen!

Ich habe mit AS noch nicht wirklich viel gearbeitet. Dennoch möchte ich gerne aus einer XML-Datei Wörter in einem Flashfilm ein und ausblenden und diese dabei immer unterschiedlich und ganz durcheinander anordnen. Nur fehlt mir dazu jeglicher Ansatz bzw. überhaupt das Wissen um hier etwas zu schaffen... Kann mir jemand weiterhelfen?
Werbung
Beiträge: 0
Registriert: Feb 2016


sadness#2
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

05.08.2011, 14:39

Ich habe mal begonnen und versucht etwas aus der XML-Datei auszugeben... allerdings ohne Erfolg:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
xmlData = new XML();
xmlData.load("woerter.xml");

xmlData.onLoad = function(success) {
    if (success) {
      trace(xmlData.firstChild.childNodes);
    }
    else {
      trace("XML-Daten konnten nicht geladen werden.");
    }
}
Kann mir jemand weiterhelfen?
skoda#3
Benutzerbild von skoda
Beiträge: 1189
Wohnort: Boston MA
Registriert: Feb 2006

05.08.2011, 14:53

du ballerst alle xml daten in nen array und gehst dann mit random ran und holste dir die werte aus dem array
no one died when clinton lied
sadness#4
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

05.08.2011, 15:05

ok, aber es scheitert bei mir schon an dem Erstellen des Arrays..... nicht mal das bekomme ich irgendwie hin.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
var myLoader:URLLoader = new URLLoader();
var myURL = new URLRequest("woerter.xml")
myLoader.load(myURL);
myLoader.addEventListener(Event.COMPLETE, onLoadComplete);
var myXML:XML;

function onLoadComplete(evt : Event):void {
        XML.ignoreComments = true;
        XML.ignoreWhitespace = true;
        myXML = new XML(myLoader.data);
        trace (myXML.woerter.item.length());}

Aber es wird immer nur "0" ausgegeben.... Hier ist die XML-Datei welche im gleichen Verzeichnis liegt:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<woerter>
   <item>
      <wort>Musterwort1</wort>
   </item>
   <item>
      <wort>Musterwort2</wort>
   </item>
   <item>
      <wort>Musterwort3</wort>
   </item>
</woerter>

Werbung
Beiträge: 0
Registriert: Feb 2016


micB#5
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

05.08.2011, 18:43

hier der 1. schritt deines vorhabens, XML auslesen und Array bestücken. du warst schon auf der richtigen spur:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var wortArray:Array = new Array();

function onLoadComplete(evt : Event):void {
     XML.ignoreComments = true;
     XML.ignoreWhitespace = true;
     myXML = new XML(myLoader.data);
     trace(myXML.item.length());    // korrigiert

  // ergänzt
   for(var i:String in myXML.item)
     {
        trace (myXML.item[i].wort)
        wortArray.push(myXML.item[i].wort)
     }
}
Geändert von micB am 05.08.11 um 18:44 Uhr
sadness#6
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

05.08.2011, 19:21

Vielen Dank. Das war wohl oder übel mein Fehler... Ich habe es nun auch schon geschafft jeweils ein dynamisches Textfeld für die einzelnen Wörter durch eine Schleife zu generieren - keine Ahnung ob das so Sinnvoll ist, aber ein Ansatz und es funktioniert ;)
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
import flash.text.TextField;

var myLoader:URLLoader = new URLLoader();
var myURL = new URLRequest("woerter.xml")
myLoader.load(myURL);
myLoader.addEventListener(Event.COMPLETE, onLoadComplete);
var myXML:XML;

var wortArray:Array = new Array();

function onLoadComplete(evt : Event):void {
      XML.ignoreComments = true;
      XML.ignoreWhitespace = true;
      myXML = new XML(myLoader.data);
     
        for(var i:String in myXML.item) {
          wortArray.push(myXML.item[i].wort)
      }
     
     for(var j:int = 0; j < myXML.item.length(); j++) {
        var tf:TextField = new TextField();
        addChild(tf);
        tf.text=myXML.item.wort[j];
        tf.x = Math.random();
     }
     
}

Nun meine Frage. Wie kann ich das nun machen, dass ich die einzelnen Textfelder unterschiedlich und zufällig auf der Bühne verteile - natürlich unter Berücksichtung der Bühnengröße?!

Ich habe es mal so versucht, leider ohne erfolg. Den es werden die derzeit 3 Filme immer übereinander an der linken oberen Ecke ausgerichtet
micB#7
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

05.08.2011, 19:50

Math.random() ist schon richtig.
wenn du aber mal in der hilfe nachschaust, siehst du, dass dabei nur werte zwischen 0 - 1 herauskommen. daher musst du den faktor noch ein wenig aufbocken.
z. b. mit der bühnengröße:

ActionScript:
1
2
tf.x = Math.random() * (stage.stageWidth - tf.width)
tf.y = Math.random() * (stage.stageHeight - tf.height)
micB#8
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

05.08.2011, 19:55

PS
du musst in der 2. schleife nicht mehr das XML durchsuchen. du hast ja die werte in dem Array und kannst dann immer/jederzeit darauf zugreifen (nicht nur in der loadComplete-funktion)

ActionScript:
1
2
3
4
5
6
7
for(var j:int = 0; j < wortArray.length; j++) {
          var tf:TextField = new TextField();
          addChild(tf);
        tf.text= wortArray[j];
          tf.x = Math.random() * (stage.stageWidth - tf.width)
        tf.y = Math.random() * (stage.stageHeight - tf.height)
       }
sadness#9
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

06.08.2011, 09:35

Ok super. Ich glaube so langsam aber sicher komme ich der Sache auf die Spur... nur komm ich mit dem ein und ausfaden noch nicht so ganz klar....
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
stop();
import flash.text.TextField;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

var myLoader:URLLoader = new URLLoader();
var myURL = new URLRequest("woerter.xml")
myLoader.load(myURL);
myLoader.addEventListener(Event.COMPLETE, onLoadComplete);
var myXML:XML;

var wortArray:Array = new Array();

function onLoadComplete(evt : Event):void {
      XML.ignoreComments = true;
      XML.ignoreWhitespace = true;
      myXML = new XML(myLoader.data);
     
        for(var i:String in myXML.item) {
          wortArray.push(myXML.item[i].wort)
      }
     
     for(var j:int = 0; j < wortArray.length; j++) {
        var tt:TextField = new TextField();
        var tf:TextFormat = new TextFormat();
        
        // Schriftart und Format festlegen
      tf.font = "Arial";
        tf.color = 0x000055;
        tf.size = 16;
        // Textfeld für Alphawert vorbereiten
      tt.blendMode = BlendMode.LAYER;
        
        addChild(tt);
        tt.text= wortArray[j];
        tt.setTextFormat(tf);
        tt.x = Math.random() * (stage.stageWidth - tt.width)
        tt.y = Math.random() * (stage.stageHeight - tt.height)
        
        // Zufälligen Alpha-Startwert festlegen      
      new Tween(tt, "alpha", Regular.easeIn, Math.random(),1,5, true);
     }
}

Die Werte sind am Anfang ganz unterschiedlich (so wie ich das auch wollte), auch das einfaden funktioniert. Nur soll sich das Ganze immer ein und ausfaden usw... wie setze ich das am besten noch um???
sadness#10
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

06.08.2011, 10:57

ich habe es mal so versucht:
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
stop();
import flash.text.TextField;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

var myLoader:URLLoader = new URLLoader();
var myURL = new URLRequest("woerter.xml")
myLoader.load(myURL);
myLoader.addEventListener(Event.COMPLETE, onLoadComplete);
var myXML:XML;

var wortArray:Array = new Array();

function onLoadComplete(evt : Event):void {
      XML.ignoreComments = true;
      XML.ignoreWhitespace = true;
      myXML = new XML(myLoader.data);
     
        for(var i:String in myXML.item) {
          wortArray.push(myXML.item[i].wort)
      }
     
     for(var j:int = 0; j < wortArray.length; j++) {
        var tt:TextField = new TextField();
        var tf:TextFormat = new TextFormat();
        
        // Schriftart und Format festlegen
      tf.font = "Arial";
        tf.color = 0x42627f;
        
        // Zufällige Schriftgröße generieren
      var zufallsgroesse:Number = 10 + Math.floor(Math.random() * (24 - 10 + 1));
        tf.size = zufallsgroesse;
        tt.autoSize = TextFieldAutoSize.LEFT;
        
        // Textfeld für Alphawert vorbereiten
      tt.blendMode = BlendMode.LAYER;
        tt.antiAliasType = "normal";
        
        addChild(tt);
        tt.text= wortArray[j];
        tt.setTextFormat(tf);
        tt.x = Math.random() * (stage.stageWidth - tt.width);
        tt.y = Math.random() * (stage.stageHeight - tt.height);
              
        // Zufälligen Alpha-Startwert und zufällige Geschwindigkeit festlegen      
      var zufallgeschwindigkeit:Number = 1 + Math.floor(Math.random() * (5 - 0.5 + 1));
        var zufallalpha:Number = Math.random();
        var tTween1 = new Tween(tt, "alpha", Regular.easeIn, zufallalpha,1,zufallgeschwindigkeit, true);
        
        tTween1.addEventListener(TweenEvent.MOTION_FINISH,f2);
        
        function f2(evt:TweenEvent):void
        {
           var tTween2 = new Tween(tt, "alpha", Regular.easeIn, 1,0,zufallgeschwindigkeit, true);            
        }
        
        tTween2.addEventListener(TweenEvent.MOTION_FINISH,f3);
        
        function f3(evt:TweenEvent):void
        {
           var tTween3 = new Tween(tt, "alpha", Regular.easeIn, 0,1,zufallgeschwindigkeit, true);            
        }
        tTween3.addEventListener(TweenEvent.MOTION_FINISH,f2);
     }
}

aber leider ohne erfolg.... :(
sadness#11
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

06.08.2011, 11:14

Auch folgendes habe ich bereits versucht, nur wird die Animation trotzdem nur 1x abgespielt und bleibt dann stehen....
ActionScript:
1
2
3
4
5
6
7
var tTween:Tween = new Tween(tt, "alpha", Regular.easeInOut, zufallalpha,1,zufallgeschwindigkeit, true);
      
      tTween.addEventListener(TweenEvent.MOTION_FINISH, makeLoop);
      
      function makeLoop(event:TweenEvent):void {
           tTween.yoyo();
        }
vindel#12
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

06.08.2011, 11:59

Hallo, dein Ansatz ist fast richtig!
erstens mal die Funktion außerhalb der Klammern deiner onLoadComplete-Funktion schreiben. Und dann ist dein Problem, dass du in makeLook auf tTween zugreifst - diese Variable ist aber nicht in der Funktion definiert.
Nimm einfach statt
ActionScript:
1tTween.yoyo();
ActionScript:
1event.currentTarget.yoyo();

Bzw um mehr Abwechslung zu bekommen:
ActionScript:
1event.currentTarget.continueTo(Math.random(), 1);
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
sadness#13
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

06.08.2011, 12:11

Ersteinmal vielen Dank. Soweit sieht das auch schon sehr gut aus. ABER: Die Wörter blenden einmal ein und einmal aus - danach erscheinen nur manche nochmal, viele bleiben dann aber komplett weg und kommen gar nicht mehr... Hier mal mein bisheriger Code:
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
stop();
import flash.text.TextField;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

var myLoader:URLLoader = new URLLoader();
var myURL = new URLRequest("woerter.xml")
myLoader.load(myURL);
myLoader.addEventListener(Event.COMPLETE, onLoadComplete);
var myXML:XML;

var wortArray:Array = new Array();

function onLoadComplete(evt : Event):void {
      XML.ignoreComments = true;
      XML.ignoreWhitespace = true;
      myXML = new XML(myLoader.data);
     
        for(var i:String in myXML.item) {
          wortArray.push(myXML.item[i].wort)
      }
     
     for(var j:int = 0; j < wortArray.length; j++) {
        var tt:TextField = new TextField();
        var tf:TextFormat = new TextFormat();
        
        // Schriftart und Format festlegen
      tf.font = "Arial";
        tf.color = 0x42627f;
        
        // Zufällige Schriftgröße generieren
      var zufallsgroesse:Number = 10 + Math.floor(Math.random() * (24 - 10 + 1));
        tf.size = zufallsgroesse;
        tt.autoSize = TextFieldAutoSize.LEFT;
        
        // Textfeld für Alphawert vorbereiten
      tt.blendMode = BlendMode.LAYER;
        tt.antiAliasType = "normal";
        
        addChild(tt);
        tt.text= wortArray[j];
        tt.setTextFormat(tf);
        tt.x = Math.random() * (stage.stageWidth - tt.width);
        tt.y = Math.random() * (stage.stageHeight - tt.height);
              
        // Zufälligen Alpha-Startwert und zufällige Geschwindigkeit festlegen      
      var zufallgeschwindigkeit:Number = 4 + Math.floor(Math.random() * (7 - 4 + 1));
        var zufallalpha:Number = Math.random();
        
        var tTween:Tween = new Tween(tt, "alpha", Regular.easeInOut, 0,1,zufallgeschwindigkeit, true);
        tTween.addEventListener(TweenEvent.MOTION_FINISH, makeLoop);
     }
}


      
function makeLoop(event:TweenEvent):void {
     event.currentTarget.yoyo();
}
vindel#14
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

06.08.2011, 12:21

Also habe deinen Code 1:1 kopiert - und im test werden alle Worte immer wieder ein- und ausgeblendet:
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}

Angehängte Dateien:
Komprimierte Datei wort random.zip3.61 KB
sadness#15
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

06.08.2011, 12:22

Ja das schon. Aber wenn man die Animation ein wenig laufen lässt, tut sich so gut wie gar nichts mehr. bzw. ändert sich dann max. noch 1 Wort.
sadness#16
Benutzerbild von sadness
Beiträge: 109
Registriert: Jul 2005

Themenautor/in

06.08.2011, 12:29

ah, habe gerade gesehen das hier nur 3 wörter vorhanden sind. ich bin schon etwas weiter und habe einige wörter mehr - vielleicht hängt es damit zusammen?
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
<?xml version="1.0" encoding="utf-8"?>
<woerter>
   <item>
      <wort>Qualitätsmanagement</wort>
   </item>
   <item>
      <wort>Changemanagement</wort>
   </item>
   <item>
      <wort>Projektmanagement</wort>
   </item>
   <item>
      <wort>Prozessmanagement</wort>
   </item>
   <item>
      <wort>Datenmanagement</wort>
   </item>
   <item>
      <wort>Lean Management</wort>
   </item>
   <item>
      <wort>Wissensmanagement</wort>
   </item>
   <item>
      <wort>Warenmanagement</wort>
   </item>
   <item>
      <wort>Innovationsmanagement</wort>
   </item>
   <item>
      <wort>Lieferantenmanagement</wort>
   </item>
   <item>
      <wort>Kundenmanagement</wort>
   </item>
   <item>
      <wort>Individualität</wort>
   </item>
   <item>
      <wort>Expertise</wort>
   </item>
   <item>
      <wort>Fachwissen</wort>
   </item>
   <item>
      <wort>Synergien</wort>
   </item>
   <item>
      <wort>Branchen</wort>
   </item>
   <item>
      <wort>Vorsprung</wort>
   </item>
   <item>
      <wort>Trends</wort>
   </item>
   <item>
      <wort>Wissen</wort>
   </item>
   <item>
      <wort>Qualität</wort>
   </item>
   <item>
      <wort>Bewertung</wort>
   </item>
   <item>
      <wort>Technologien</wort>
   </item>
   <item>
      <wort>Methoden</wort>
   </item>
   <item>
      <wort>Werkzeuge</wort>
   </item>
   <item>
      <wort>Pionier</wort>
   </item>
   <item>
      <wort>Zukunft</wort>
   </item>
   <item>
      <wort>Vision</wort>
   </item>
   <item>
      <wort>Standards</wort>
   </item>
   <item>
      <wort>Vertrauen</wort>
   </item>
   <item>
      <wort>Transparenz</wort>
   </item>
   <item>
      <wort>Experten</wort>
   </item>
</woerter>


AntwortenRegistrieren Seite1 2  

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   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de