Anzeige

[AS3] Error #1009:

[AS3] - Error #1009: | PSD-Tutorials.de

Erstellt von waldmannvonritter, 01.03.2012.

  1. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    Hallo zusammen, ich kämpfe hier grad mit etwas seltsamen rum und bräuchte echteinmal Hilfe.

    Habe mehrere parallaxwelten erstellt und möchte nun von einer Welt in die andere wechseln.

    Der Sprung in die nächste welt funktioniert zwar, aber wenn ich in der neuen Welt angekommen bin bekomme ich eine Fehlermeldung;

    TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
    at bayala_fla::MainTimeline/scrollFaraun()


    Und wenn ich dann in die nähste welt springe, kommt wieder diese fehlermeldung. Der Fehler verweist jedes mal auf die Welt in der ich zuletzt war.

    Muss ich hier ein event removen?

    hier der code von der Hauptszene in der man sich alles anschauen kann:
    HTML:
    1.  
    2. // Variables
    3. var targetXleftFaraun:Number;
    4. var targetXrightFaraun:Number;
    5. var scene_xFaraun:Number;
    6.  
    7. stop();
    8.  
    9. // Listener
    10. addEventListener(Event.ENTER_FRAME, scrollFaraun);
    11. addEventListener(Event.ENTER_FRAME, transFaraun);
    12.  
    13. // Transparency function
    14. function transFaraun(ereigniss:Event):void
    15. {
    16.     if (this.currentFrameLabel == "faraun")
    17.     {
    18.         arrow_alpha_Faraun();
    19.         scrollFaraun(ereigniss);
    20.     }
    21. }
    22.  
    23. // ButtonRight
    24. arrowToDragonRiders.buttonMode = true;
    25. arrowToDragonRiders.useHandCursor = true;
    26. arrowToDragonRiders.addEventListener(MouseEvent.CLICK, gotoDragonRiders);
    27.  
    28. // AreaScroll
    29. function scrollFaraun(e:Event):void
    30. {
    31.     // NoGo Area
    32.     if (mouseX <= 300 || mouseX >= 600)
    33.     {
    34.         // Area width: from -> to
    35.         if (sceneFaraun.x <= 900 && sceneFaraun.x >= 400)
    36.         {
    37.             // AreaCenterPos and Speed
    38.             sceneFaraun.x -= (mouseX - 450) * 0.03;
    39.         }
    40.         {
    41.             // PosTerminateLeft
    42.             if (sceneFaraun.x > 900)
    43.             {
    44.                 sceneFaraun.x = 900;
    45.             }
    46.             // PosTerminateRight
    47.             if (sceneFaraun.x < 400)
    48.            {
    49.                sceneFaraun.x = 400;
    50.            }
    51.            // Current Position ToGo
    52.            scene_xFaraun = sceneFaraun.x;
    53.        }
    54.    }
    55. };
    56.  
    57. // ButtonAlpha
    58. function arrow_alpha_Faraun()
    59. {
    60.  
    61.    // right button
    62.    targetXrightFaraun = (mouseX-450)/450;
    63.    arrowToDragonRiders.alpha += (targetXrightFaraun - arrowToDragonRiders.alpha);
    64. }
    65.  
    66. // Target - RightButton
    67. function gotoDragonRiders(ereigniss:MouseEvent):void
    68. {
    69.    gotoAndPlay('faraun_out_to_dragon_riders');
    70. }
    71.  
    und hier der code wenn die welt verlässt:
    HTML:
    1.  
    2. stage.removeEventListener(Event.ENTER_FRAME, transFaraun);
    3.  
    4. sceneFaraun.x = scene_xFaraun;
    5.  
    und am ende des ausgangs steht dann:
    HTML:
    1.  
    2. gotoAndPlay('district_dragon_riders');
    3.  
    hoffentlich versteht jemand mein wirrwarr:D


    gruß Tomas
     
    #1      
  2. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    es scheint so, dass sceneFaraun nicht bekannt ist (zu mindestens zu dieser Zeit). Du kannst mal ausprobieren ob dies funktioniert:

    Code (Text):
    1. // AreaScroll
    2. function scrollFaraun(e:Event):void
    3. {
    4.     [COLOR="Red"]if (!sceneFaraun){
    5.       //Erstmal nur testen, ob es der Fall ist, kann später gelöscht werden
    6.       trace("sceneFaraun is missing");
    7.       //Die nächste Zeile sollte bleiben, WENN trotzdem alles noch funktioniert.
    8.       return;
    9.     }[/COLOR]
    10.     // NoGo Area
    11.     if (mouseX <= 300 || mouseX >= 600)
    12.     {
    13.         // Area width: from -> to
    14.         if (sceneFaraun.x <= 900 && sceneFaraun.x >= 400)
    15.         {
    16.             // AreaCenterPos and Speed
    17.             sceneFaraun.x -= (mouseX - 450) * 0.03;
    18.         }
    19.         {
    20.             // PosTerminateLeft
    21.             if (sceneFaraun.x > 900)
    22.             {
    23.                 sceneFaraun.x = 900;
    24.             }
    25.             // PosTerminateRight
    26.             if (sceneFaraun.x < 400)
    27.             {
    28.                 sceneFaraun.x = 400;
    29.             }
    30.             // Current Position ToGo
    31.             scene_xFaraun = sceneFaraun.x;
    32.         }
    33.     }
    34. };
    MFG ADcosmos
     
    #2      
  3. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    Hallo AdCosmos :)

    vielen dank! Wegen deiner idee bin ich darauf gestoßen das ich bei der scroll fuktion ein Event zuviel angelegt habe. Und das hat dann natürlich gefehlt. Also hab ich das event rausgelöscht und nun passt es. Keine fehlermeldungen mehr! Aber natürlich führte das eine zum anderen:

    Was kann der grund sein das ein mc seine Animation nicht ausführt.

    also ablauf:
    - ich starte die welt (einflugszene)
    - ich bewege die scene hin und her (alles prima)
    - dann klick ich auf einen mc/button um diese scene zu verlassen (wird richtig übergeben)
    - das hintergrundbild fadet aus (also kann ich davon ausgehen das die richtige stelle abgespielt wird) nur die scene bleibt einfach stehen anstatt sich aus der bühne rauszubewegen (rausflug)
    -dann wird normal die neue welt geladen mit der einflugszene (hier ist die bewegung wieder aktiv)

    Also nur der rausflug funktioniert nicht. Obwohl man im hintergrund den himmel ausfaden sieht.

    hier mal der code für eine welt:

    scene:
    HTML:
    1.  
    2. //import flash.events.MouseEvent;
    3.  
    4. stop();
    5.  
    6. // Listener
    7. addEventListener(Event.ENTER_FRAME, mainEvent_Wedding);
    8.  
    9. // Transparency function
    10. function mainEvent_Wedding(ereigniss:Event):void
    11. {
    12.     if (this.currentFrameLabel == "wedding")
    13.     {
    14.         arrow_alphaWedding();
    15.         move_sceneWedding();
    16.     }
    17. }
    18.  
    19. // ButtonLeft
    20. arrowToPegasus2.buttonMode = true;
    21. arrowToPegasus2.useHandCursor = true;
    22. arrowToPegasus2.addEventListener(MouseEvent.CLICK, gotoPegasus2);
    23.  
    24. // ButtonRight
    25. arrowToNoctisDarkForest.buttonMode = true;
    26. arrowToNoctisDarkForest.useHandCursor = true;
    27. arrowToNoctisDarkForest.addEventListener(MouseEvent.CLICK, gotoNoctisDarkForest);
    28.  
    29. // AreaScroll
    30. function move_sceneWedding()
    31. {
    32.     // NoGo Area
    33.     if (mouseX <= 300 || mouseX >= 600)
    34.     {
    35.         // Area width: from -> to
    36.         if (sceneWedding.x <= 750 && sceneWedding.x >= 150)
    37.         {
    38.             // AreaCenterPos and Speed
    39.             sceneWedding.x -= (mouseX - 450) * 0.03;
    40.         }
    41.         {
    42.             // PosTerminateLeft
    43.             if (sceneWedding.x > 750)
    44.             {
    45.                 sceneWedding.x = 750;
    46.             }
    47.             // PosTerminateRight
    48.             if (sceneWedding.x < 150)
    49.            {
    50.                sceneWedding.x = 150;
    51.            }
    52.            // Current Position ToGo
    53.            scene_x = sceneWedding.x;
    54.        }
    55.    }
    56. };
    57.  
    58. // ButtonAlpha
    59. function arrow_alphaWedding()
    60. {
    61.    // left button
    62.    targetXleft = ((mouseX+450)/450)-1;
    63.    arrowToPegasus2.alpha = -(targetXleft -1);
    64.  
    65.    // right button
    66.    targetXright = (mouseX-450)/450;
    67.    arrowToNoctisDarkForest.alpha += (targetXright - arrowToNoctisDarkForest.alpha);
    68. }
    69.  
    70. // Target - LeftButton
    71. function gotoPegasus2(ereigniss:MouseEvent):void
    72. {
    73.    gotoAndPlay('wedding_out_to_pegasus');
    74. }
    75.  
    76. // Target - RightButton
    77. function gotoNoctisDarkForest(ereigniss:MouseEvent):void
    78. {
    79.    gotoAndPlay('wedding_out_to_noctis_dark_forest');
    80. }
    81.  
    rausflug:
    HTML:
    1.  
    2. stage.removeEventListener(Event.ENTER_FRAME, mainEvent_Wedding);
    3.  
    4. sceneWedding.x = scene_x;
    5.  
    am ende vom raausflug:
    HTML:
    1.  
    2. gotoAndPlay('district_noctis_dark_forest');
    3.  
    grüße Tomas
     
    #3      
  4. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    ich hab zwar noch keine wirkliche Idee, aber mir sind einige Dinge aufgefallen.

    1. manchmal nutzt Du addEventListener (direkt nach dem stop(); ) und beim Rausflug stage.removeEventListener. Beides muss nicht identisch sein. Vor allem dann nicht, wenn Du eine eigene Klasse erstellen würdest. (Davon gehe ich hier mal nicht aus. Du wirst also das Actionscript nicht in einer separaten as-Datei haben)

    2. Ein paar Fragen zur Organisation der Welt.

    - Ich gehe davon aus, dass Du eine einzelne Zeitleiste hast, und in der sind alle Animationen enthalten, oder? (Also Frame 1-29 Intro Szene1, Frame 30 die Szene selbst, Frame 31- 45 Outro, dann folgt das Intro für Szene 2, und so weiter)

    - Wo liegen die Skripte, die Du gepostet hast? Der erste Teil deines Postings wird wahrscheinlich dort liegen, wo die Szene ist (in dem oberen Beispiel also Frame 30). Der zweite Teil würde dann in etwa auf Frame 45 liegen, oder? (die 45 kommt von der vorherigen Frage, mir ist klar, dass bei Dir die Zahl anders sein wird).

    - "das hintergrundbild fadet aus", stößt Du dies mit der Methode gotoNoctisDarkForest an? (Besser gesagt mit dem gotoAndPlay innerhalb dieser Methode?) Dann hast Du sicher schon geguckt, ob sich die Szene dort auch raus bewegt, denn wenn Du sie in der Zeitleiste animiert hast, sollte sie funktionieren. Eventuell hast Du nur vergessen ein Schlüsselbild zu setzen, bzw. er ist an der falschen Stelle?

    3. Zu der Aussage "Was kann der grund sein das ein mc seine Animation nicht ausführt.", ohne konkret auf Dein Projekt einzugehen.
    - Der MC ist nicht auf der Bühne platziert
    - Im MC selbst ist ein stop(); , so dass ein gotoAndPlay keine Funktion hat, da es ja bei dem Frame stoppen soll. Da würde es helfen, einen Frame weiter zu gehen. Also aus gotoAndPlay(1) würde gotoAndPlay(2) werden.
    - Ein Schlüsselbild an der falschen Stelle / oder auf der falschen Ebene.

    MFG ADcosmos
     
    #4      
  5. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    Hi,

    @AdCosmos
    du hast es exat beschrieben wie es auch wirklich ist :) und ich hab auch die lösung gefunden. man musste leiglich "sceneXYZ" in einen weiteren mc packen, und schon gings. Frag mich net warum, aber nun klapt es :)

    aber nun mal zu den dyn.textfeldern. Kannst dich noch erinnern wie du mir beschrieben hast texte aus einer externen xml-datei auszulesen?

    Jetzt kombiniere ich die welt mit diesen xml-daten. Wenn man über ein objekt hovert wird quasi der text ausgelesen und in einem dyn.textfelds ausgegeben.

    Hast du ne ahnung wie man diesen styles geben kann? Ich hab schon einiges rumprobiert, aber nur zum teil erfolg gehabt.

    so schaut mein bisheriger code aus:
    HTML:
    1.  
    2. // Style DynTextfield
    3. var tf:TextFormat = new TextFormat();
    4. tf.leftMargin = 15;
    5. tf.rightMargin = 15;
    6. intro_txt.background = true;
    7. intro_txt.backgroundColor = 0xFFFFFF;
    8. intro_txt.autoSize = TextFieldAutoSize.LEFT;
    9. intro_txt.wordWrap = true;
    10. intro_txt.defaultTextFormat = tf;
    11.  
    was hier noch fehlt ist quasi ein margin o. padding top und bottom und die ecken sollen abgerundet sein.

    aber jeglicher versuch topMargin oder intro_txt.autoSize = +5; schlug fehl. Mit den radien klapte gaarnix....

    gruß Tomas
     
    #5      
  6. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    erinnern kann ich mich. Aber nicht mehr so genau:D

    Um Dein "Problem" zu lösen, würde ich einen MC nutzen.

    So wie hier:
    Code (Text):
    1. //Globale Variable
    2. var txt_mc= null;
    3.  
    4. //Nur zum Test, des Hover Effektes
    5. var hover_mc:MovieClip=new MovieClip();
    6. hover_mc.graphics.beginFill(0x000000);
    7. hover_mc.graphics.drawRect(0,0,100,100);//Ersten beiden Zahlen sollten immer null sein
    8. hover_mc.graphics.endFill();
    9.  
    10. hover_mc.x=200;//Hier positionieren eines MCs, NICHT drawRect nutzen
    11. hover_mc.y=100;//Hier positionieren eines MCs, NICHT drawRect nutzen
    12. hover_mc.buttonMode=true;
    13. hover_mc.addEventListener(MouseEvent.ROLL_OVER, showTxt);
    14. hover_mc.addEventListener(MouseEvent.ROLL_OUT, hideTxt);
    15. stage.addChild(hover_mc);
    16.  
    17. //Hier gehts weiter
    18. /*  Method, which shows the text with a round box outside, if the user hovers over a MC
    19. */
    20. function showTxt(e:Event):void{
    21.     var margin:int=10;//Dein Margin-Wert
    22.     var txt:TextField= new TextField();
    23.     var txtFormat:TextFormat=new TextFormat();
    24.     txtFormat.font="Arial";
    25.     txtFormat.align="center";
    26.     txt.defaultTextFormat=txtFormat;
    27.     txt.mouseEnabled=false;//Benutzer kann (und braucht auch nicht) nicht mit Txt interagieren
    28.    
    29.     //For Schleife nur zum Test
    30.     //ToDO Den richtigen Text auswaehlen
    31.     txt.text="";
    32.     for (var i:int=0;i<Math.random()*20;i++){
    33.         txt.appendText("H ");
    34.     }
    35.    
    36.     //Ab hier gehst original weiter, text nicht vergessen zu setzen, nach Loeschen der for-Schleife
    37.     //txt.text="Dein Text";
    38.     txt.height=txt.textHeight+2;//Zur Sicherheit
    39.     txt.width=txt.textWidth+5;
    40.  
    41.  
    42.     var mc:MovieClip= new MovieClip();
    43.     mc.graphics.beginFill(0x00ff00);//Farbe für den MovieClip
    44.     mc.graphics.drawRoundRect(0, 0, txt.width+2*margin,txt.height+2*margin, 15);
    45.     mc.graphics.endFill();
    46.  
    47.     mc.x=(stage.stageWidth-mc.width)/2;
    48.     mc.y=(stage.stageHeight-mc.height)/2;
    49.     txt.x=txt.y=margin;//positioniert TxtFeld mittig imMC
    50.     mc.addChild(txt);
    51.    
    52.     //Text_mc loschen, wenn schon auf der Buehne
    53.     //sonst: Ersetzen des urspruenglichen txtMc
    54.     if (txt_mc){
    55.         stage.removeChild(txt_mc);
    56.     }
    57.     txt_mc=mc;
    58.     stage.addChild(txt_mc);
    59. }
    60.  
    61. /*  Method, which hides the text, if the user hovers not more over a MC
    62. */
    63. function hideTxt(e:Event):void{
    64.     if(txt_mc){
    65.         stage.removeChild(txt_mc);
    66.         txt_mc=null;
    67.     }
    68. }
    MFg ADcosmos
     
    #6      
  7. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    Moin AdCosmos,

    danke für deine Ausführliche beschreibung :) Nur irgendwie ist das etwas tooMuch xD

    Ich habs versucht einzubauen. Eine Schwarze Box tauchte auf und beim hover erschien der text in einem kasten mit abgerundeten ecken. Genauso wie ich mir das vorgestellt hatte :) Nur irgendwie klapt die kombinierung nicht so ganz mit der externen datei.

    Ich zeig dir mal wie ich überhaupt das bischer umgesezt habe:
    (ez mal ohne deine erweiterung damit du dir mal ein Bild machen kannst)

    - Auf der Bühne befinden sich zwei Mc's und zwei DynTextfelder

    HTML:
    1.  
    2. var map:Object = {
    3. "charTomas": {
    4.         btn: McTomas,
    5.         tf: txtTomas
    6.     },
    7. "charAdCosmos": {
    8.         btn: McAdCosmos,
    9.         tf: txtAdCosmos
    10.     }
    11. };
    12. init();
    13.  
    14. function init():void
    15. {
    16.     for each (var data:Object in map)
    17.     {
    18.         data.btn.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver, false, 0, true);
    19.         data.btn.addEventListener(MouseEvent.ROLL_OUT, manageMouseOver, false, 0, true);
    20.         data.text = "";
    21.     }
    22.     var loader:URLLoader=new URLLoader();
    23.     loader.addEventListener(Event.COMPLETE, loadXMLHandler);
    24.     loader.load(new URLRequest("txt_area_51_de.xml"));
    25. }
    26. function loadXMLHandler(e:Event):void
    27. {
    28.     e.currentTarget.removeEventListener(Event.COMPLETE, loadXMLHandler);
    29.     var xml:XML = new XML(e.currentTarget.data);
    30.     for each (var char:XML in xml.char)
    31.     {
    32.         map[char. @ id.toString()].text = char.labeltext.toString();
    33.     }//sonst wird hier der XMLNode gespeichert
    34. }
    35. function manageMouseOver(e:MouseEvent):void
    36. {
    37.     for each (var data:Object in map)
    38.     {
    39.         if (data.btn != e.currentTarget)
    40.         {
    41.             continue;
    42.         }
    43.         if (data.tf && data.tf is TextField)
    44.        {
    45.            data.tf.text = (e.type == MouseEvent.ROLL_OVER? data.text: "");
    46.         }
    47.         return;
    48.     }
    49. }
    50.  
    Zuerst leg ich mit "map" fest was zu wem gehört. Sprich: McFaraun ist der mc über den ich drüberhover und txtFaraun ist der Instanzname vom DynTextfeld.

    die xml dazu sieht so aus:
    HTML:
    1.  
    2. <?xml version="1.0" encoding="utf-8"?>
    3.  
    4.    
    5.     <char id="charTomas">
    6.         <labeltext>Hallo ich bin der Tomas und lerne ActionScript3.</labeltext>
    7.     </char>
    8.    
    9.     <char id="charAdCosmos">
    10.         <labeltext>Hallo ich bin der AdCosmos und werde von Tomas gequält! :D</labeltext>
    11.     </char>
    12.    
    13.  
    ich hab NULL plan wie ich nun das mit der anderen kombinieren soll ...

    oder soll ich einfach noch zwei mc's erstellen und denn dann den style verpassen? Aber was passiert dann mit der funktion die die xml-datei ausliest? kann ich denn zwei funktionen ineinander verschachteln?

    *kopf qualmt xD*

    gruß Tomas
     
    #7      
  8. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    kurze Nachfrage.

    1. Wenn die Methode loadXMLHandler ausgeführt wurde, (also am Ende davon), besteht das Map-Objekt aus:
    Code (Text):
    1. var map:Object = {
    2. "charTomas": {
    3.         btn: McTomas,
    4.         tf: txtTomas,
    5.     txt: "Hallo ich bin der Tomas und lerne ActionScript3."
    6.     },
    7. "charAdCosmos": {
    8.         btn: McAdCosmos,
    9.         tf: txtAdCosmos,
    10.     txt: "Hallo ich bin der ADCosmos und werde von Tomas NICHT gequält! :D"
    11.     }
    12. };
    Korrekt, oder?

    2. Sind Deine dynamischen Textfelder immer an der gleichen Stelle (x,y)?

    3. Wenn 1. und 2. richtig ist:

    Brauchst Du die zwei dynamischen Textfelder nicht, wir erstellen Sie per AS3.

    Code (Text):
    1. [COLOR="red"]var txt_mc:TextField=null;[/COLOR]
    2.  
    3. var map:Object = {
    4. "charTomas": {
    5.         btn: McTomas,
    6.         tf: txtTomas
    7.     },
    8. "charAdCosmos": {
    9.         btn: McAdCosmos,
    10.         tf: txtAdCosmos
    11.     }
    12. };
    13. init();
    14.  
    15. function init():void
    16. {
    17.     for each (var data:Object in map)
    18.     {
    19.         data.btn.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver, false, 0, true);
    20.         data.btn.addEventListener(MouseEvent.ROLL_OUT, manageMouseOver, false, 0, true);
    21.         data.text = "";
    22.     }
    23.     var loader:URLLoader=new URLLoader();
    24.     loader.addEventListener(Event.COMPLETE, loadXMLHandler);
    25.     loader.load(new URLRequest("txt_area_51_de.xml"));
    26. }
    27. function loadXMLHandler(e:Event):void
    28. {
    29.     e.currentTarget.removeEventListener(Event.COMPLETE, loadXMLHandler);
    30.     var xml:XML = new XML(e.currentTarget.data);
    31.     for each (var char:XML in xml.char)
    32.     {
    33.         map[char. @ id.toString()].text = char.labeltext.toString();
    34.     }//sonst wird hier der XMLNode gespeichert
    35. }
    36. function manageMouseOver(e:MouseEvent):void
    37. {
    38.     for each (var data:Object in map)
    39.     {
    40.         if (data.btn != e.currentTarget)
    41.         {
    42.             continue;
    43.         }
    44.     [COLOR="red"]//if-Abfrage entfernt
    45.         var margin:int=10;//Dein Margin-Wert
    46.     var txt:TextField= new TextField();
    47.     var txtFormat:TextFormat=new TextFormat();
    48.     txtFormat.font="Arial";
    49.     txtFormat.align="center";
    50.     txt.defaultTextFormat=txtFormat;
    51.     txt.mouseEnabled=false;//Benutzer kann (und braucht auch nicht) nicht mit Txt interagieren
    52.     txt.text=(e.type == MouseEvent.ROLL_OVER? data.text: "");
    53.     txt.height=txt.textHeight+2;//Zur Sicherheit
    54.     txt.width=txt.textWidth+5;
    55.  
    56.     var mc:MovieClip= new MovieClip();
    57.     mc.graphics.beginFill(0x00ff00);//Farbe für den MovieClip, Gradient ist auch moeglich
    58.     mc.graphics.drawRoundRect(0, 0, txt.width+2*margin,txt.height+2*margin, 15);
    59.     mc.graphics.endFill();
    60.  
    61.     mc.x=(stage.stageWidth-mc.width)/2;//zentriert den TxtMC, solltest Du aendern, wo Du den MC hingaben moechtest
    62.     mc.y=(stage.stageHeight-mc.height)/2;//zentriert den TxtMC, solltest Du aendern, wo Du den MC hingaben moechtest
    63.     txt.x=txt.y=margin;//positioniert TxtFeld mittig imMC, sollte bleiben
    64.     mc.addChild(txt);
    65.    
    66.     //Text_mc loeschen, wenn schon auf der Buehne
    67.     //sonst: Ersetzen des urspruenglichen txtMc
    68.     if (txt_mc){
    69.         stage.removeChild(txt_mc);
    70.     }
    71.     txt_mc=mc;
    72.     stage.addChild(txt_mc);[/COLOR]
    73.         return;
    74.     }
    75. }
    76.  
    77. [COLOR="Red"]function manageMouseOut(e:MouseEvent):void{
    78.     stage.removeChild(txt_mc);
    79. }[/COLOR]
    80.  
    81.  
    MFg ADcosmos
     
    #8      
  9. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    leider sind es immer unterschiedliche anzahlen von textfeldern. und die mc's für die hovers müsten sich mit den chars mitbewegen


    gruß tomas
     
    #9      
  10. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    wenn ich mit 1. Recht habe (Das hast Du ja nicht beantwortet):

    Dann würde ich vorschlagen, Du positioniert anstatt der Textfelder, leere MC (ohne Textfelder!) mit einem Namen. Dann würde das Skript so lauten:

    Code (Text):
    1.  
    2. var map:Object = {
    3. "charTomas": {
    4.         btn: McTomas,
    5.         tf: txtTomas //referenziert dann ein MC?
    6.     },
    7. "charAdCosmos": {
    8.         btn: McAdCosmos,
    9.         tf: txtAdCosmos //referenziert dann ein MC?
    10.     }
    11. };
    12. init();
    13.  
    14. function init():void
    15. {
    16.     for each (var data:Object in map)
    17.     {
    18.         data.btn.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver, false, 0, true);
    19.         data.btn.addEventListener(MouseEvent.ROLL_OUT, manageMouseOver, false, 0, true);
    20.         data.text = "";
    21.     }
    22.     var loader:URLLoader=new URLLoader();
    23.     loader.addEventListener(Event.COMPLETE, loadXMLHandler);
    24.     loader.load(new URLRequest("txt_area_51_de.xml"));
    25. }
    26. function loadXMLHandler(e:Event):void
    27. {
    28.     e.currentTarget.removeEventListener(Event.COMPLETE, loadXMLHandler);
    29.     var xml:XML = new XML(e.currentTarget.data);
    30.     for each (var char:XML in xml.char){
    31.         [COLOR="red"]var theStr:String=char.labeltext.toString();
    32.         var txt_mc= map[char. @ id.toString()].tf;
    33.         //Nächste Zeile ware dann nicht noetig
    34.         map[char. @ id.toString()].text = char.labeltext.toString();
    35.  
    36.         //Nicht getestet, hoffe aber das ich richtig liege
    37.         var margin:int=10;//Dein Margin-Wert
    38.     var txt:TextField= new TextField();
    39.     var txtFormat:TextFormat=new TextFormat();
    40.     txtFormat.font="Arial";
    41.     txtFormat.align="center";
    42.     txt.defaultTextFormat=txtFormat;
    43.     txt.mouseEnabled=false;//Benutzer kann (und braucht auch nicht) nicht mit Txt interagieren
    44.     txt.text= theStr;
    45.     txt.height=txt.textHeight+2;//Zur Sicherheit
    46.     txt.width=txt.textWidth+5;
    47.  
    48.     txt_mc.graphics.beginFill(0x00ff00);//Farbe für den MovieClip, Gradient ist auch moeglich
    49.     txt_mc.graphics.drawRoundRect(0, 0, txt.width+2*margin,txt.height+2*margin, 15);
    50.     txt_mc.graphics.endFill();
    51.         //Eventuell width und height des MCs setzen, kannst Du eventuell weglassen
    52.         txt_mc.width=txt.width+2*margin
    53.         txt_mc.height=txt.height+2*margin;
    54.  
    55.     txt.x=txt.y=margin;//positioniert TxtFeld mittig imMC, sollte bleiben
    56.     txt_mc.visibility=false;//Kein MC mit Textfeld ist sichtbar[/COLOR]
    57.     }//sonst wird hier der XMLNode gespeichert
    58. }
    59. function manageMouseOver(e:MouseEvent):void
    60. {
    61.     for each (var data:Object in map)
    62.     {
    63.         if (data.btn != e.currentTarget)
    64.         {
    65.             continue;
    66.         }
    67.         [COLOR="Red"]//tf jetzt ein MC, nicht getestet, wir arbeiten aber nun mit dem MC und seiner Visibility
    68.     if (data.tf && data.tf is MovieClip){
    69.             data.tf.visibilty = (e.type == MouseEvent.ROLL_OVER? true: false);
    70.         }[/COLOR]
    71.         return;
    72.     }
    73. }
    74.  
    75.  

    MFG ADCosmos
     
    Zuletzt von einem Moderator bearbeitet: 07.03.2012
    #10      
  11. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    Hi,

    ich bekomm drei fehler:

    1084: Syntaxfehler: identifier vor semicolon erforderlich.
    und
    1084: Syntaxfehler: rightbrace vor txt erforderlich.
    bezieht sich auf:
    HTML:
    1.  
    2. txt_mc=;txt.width+2*margin
    3.  
    1084: Syntaxfehler: rightparen vor isMovieClip erforderlich.
    beziht sich auf:
    HTML:
    1.  
    2. if (data.tf && data.tf isMovieClip){
    3.  
    beim ertsen error war ich net sicher ob das semikolon nach dem "=" raus musste.

    beim zweiten fehler hab ich die geschweiften klammern überprüft, jedoch keinen Fehler entdeckt.

    Ach noch zu deiner frage 1.0 ;) sry hab vergessen darauf zu antworten. Wenn ich dich richtig verstanden habe dann lautet die antwort : Ja


    grüße Tomas
     
    Zuletzt bearbeitet: 07.03.2012
    #11      
  12. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    habe im Script den Fehler behoben.

    1.
    Code (Text):
    1. txt_mc=;txt.width+2*margin
    sollte
    Code (Text):
    1. txt_mc.width=txt.width+2*margin;
    heißen

    2. Zwischen is und MovieClip muss ein Leerzeichen.

    Mfg ADcosmos
     
    #12      
  13. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    Hi,

    danke erstmal für die schnelle Antwort. Und die korrekturen waren richtig :) Aber ...

    also nochmal für mich, damit ich alles verstanden habe.

    auf meiner bühne sind nun 4 mc's mit den Bezeichnungen:
    - mcTomas
    - txtTomas
    - mcAdCosmos
    - txtAdCosmos

    und wenn ich das dann ausführe kommt:
    1120: Zugriff auf eine nicht definierte Eigenschaft data.

    bezogen auf:
    txt.text=(e.type == MouseEvent.ROLL_OVER? data.text: "");


    gruß Tomas
     
    #13      
  14. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    1. also pro XML-Element hast Du einen Button und einen MC. Der Mc ist dein früheres dynamisches Textfeld und ersetzt dieses. Also ist deine Annhame richtig.

    2. ersetze die komplette Zeile von data.text durch
    Code (Text):
    1. txt.text= theStr;
    MFG ADcosmos
     
    #14      
  15. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    Hi,

    habs ersezt. und raus kamen die vier von mir angelegten mc'c (4 kästen) + zwei grüne 4px hohe linien mit leicht abgerundeten ecken. Ich schätze mal das darin der text stehen müsste?!

    Vieleiht magst es dir ansehen? habs mal hochgeladen. ist nur 18kb groß.

    http://www.filedropper.com/testprojekt

    gruß Tomas
     
    #15      
  16. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    1. Angesehen hab ich es, aber nur die SWF, da ich ja nur CS4 habe. Wäre nicht schlecht die fla-datei für CS4 zu bekommen. (Müsste über "speichern unter" für CS4 gehen)

    2. Es sieht fast so aus, als würde der Text dem MC nicht zugewiesen werden, oder die Höhe des Textfeldes ist nicht korrekt. Da kannst Du mal testen, wenn Du 1. nicht machen möchtest/kannst,
    ob anstelle von

    txt.height=txt.textHeight+2;

    das

    txt.height=txt.textHeight+20;

    funktioniert.

    MFg ADcosmos
     
    #16      
  17. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    Hi,

    hier erstmal die cs4 version der .fla

    http://www.filedropper.com/testprojektcs4

    ... ich hab mal aus der 2 eine 20 gemacht. Und erschienen ist eine grüne große leere box. d.h.? der verweis zum text stimmt nicht?

    gruß Tomas
     
    #17      
  18. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    1. Die MCs txtContentTOmas und TxtAdCosmos sollten leer sein.

    2. Waren bei mir zwei Fehler drin

    MFg ADcosmos
     
    Zuletzt von einem Moderator bearbeitet: 07.03.2012
    #18      
  19. waldmannvonritter

    waldmannvonritter Nicht mehr ganz neu hier

    Dabei seit:
    13.08.2009
    Beiträge:
    79
    Geschlecht:
    männlich
    Ort:
    Oberasbach
    Software:
    CS6 Master
    Kameratyp:
    Canon 40D
    Error #1009:
    AW: Error #1009:

    Hi,

    also erstma muss ich hier sagen das du echt n Hammer Programmierer bist! es passt super nun. Danke!

    Kann ich jetzt dann einfach das hinzufügen wenn ich eine feste breite der felder haben möchte und zeilenumbruch und autohight des feldes?

    txt_mc.autoSize = TextFieldAutoSize.LEFT;
    txt_mc.wordWrap = true;
    txt_mc.width = 300;

    gruß Tomas
     
    #19      
  20. ADcosmos

    ADcosmos Guest

    Error #1009:
    AW: Error #1009:

    Hi,

    nicht ganz. Du musst jetzt das txtFeld ansprechen. In deinem Beispiel sprichst Du ja den MC an. So sollte es dann sein:

    Code (Text):
    1.  
    2. var map:Object = {
    3.     "charTomas": {
    4.         btn: mcBtnTomas,
    5.         tf: txtContentTomas
    6.     },
    7.     "charAdCosmos": {
    8.         btn: mcBtnAdCosmos,
    9.         tf: txtContentAdCosmos
    10.     }
    11. };
    12. init();
    13.  
    14. function init():void{
    15.     for each (var data:Object in map){
    16.         data.btn.buttonMode=true;
    17.         data.btn.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver, false, 0, true);
    18.         data.btn.addEventListener(MouseEvent.ROLL_OUT, manageMouseOver, false, 0, true);
    19.         data.text = "";
    20.     }
    21.     var loader:URLLoader=new URLLoader();
    22.     loader.addEventListener(Event.COMPLETE, loadXMLHandler);
    23.     loader.load(new URLRequest("txt_area_51_de.xml"));
    24. }
    25.  
    26. function loadXMLHandler(e:Event):void{
    27.     e.currentTarget.removeEventListener(Event.COMPLETE, loadXMLHandler);
    28.     var xml:XML = new XML(e.currentTarget.data);
    29.     for each (var char:XML in xml.char){
    30.         var theStr:String=char.labeltext.toString();
    31.         var txt_mc= map[char. @ id.toString()].tf;
    32.         map[char. @ id.toString()].text = char.labeltext.toString();
    33.        
    34.         var margin:int=10;//Dein Margin-Wert
    35.         var txt:TextField= new TextField();
    36.         var txtFormat:TextFormat=new TextFormat();
    37.         txtFormat.font="Arial";
    38.         txtFormat.align="center";
    39.         txt.defaultTextFormat=txtFormat;
    40.         txt.mouseEnabled=false;//Benutzer kann (und braucht auch nicht) nicht mit Txt interagieren
    41.         txt.autoSize = TextFieldAutoSize.LEFT;
    42.         txt.wordWrap = true;
    43.         txt.width = 300;
    44.         txt.text= theStr;
    45.         txt_mc.graphics.beginFill(0x00ff00);//Farbe für den MovieClip, Gradient ist auch moeglich
    46.         txt_mc.graphics.drawRoundRect(0, 0, txt.width+2*margin,txt.height+2*margin, 15);
    47.         txt_mc.graphics.endFill();
    48.         txt_mc.width=txt.width+2*margin;
    49.         txt_mc.height=txt.height+2*margin;
    50.         txt_mc.addChild(txt);
    51.         txt.x=txt.y=margin;//positioniert TxtFeld mittig im MC, sollte bleiben
    52.         txt_mc.visible=false;//Kein MC mit Textfeld ist sichtbar
    53.        
    54.     }//sonst wird hier der XMLNode gespeichert
    55. }
    56.  
    57. function manageMouseOver(e:MouseEvent):void{
    58.     for each (var data:Object in map){
    59.         if (data.btn != e.currentTarget){
    60.             continue;
    61.         }
    62.         if (data.tf && data.tf is MovieClip){
    63.             data.tf.visible = (e.type == MouseEvent.ROLL_OVER? true: false);
    64.         }
    65.         return;
    66.     }
    67. }
    68.  
    MFg ADcosmos
     
    #20      
x
×
×