Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-07-2011, 12:16   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: Wien
Beiträge: 26
bild auf mc in den hintergrund

hallo,

ich lade ein jpg auf ein mc, danach setze ich mehrere kleine clips auf das mc.
nun sind diese aber leider immer hinter dem jpg, obwohl ich sie später lade und auch noch den childIndex vorreihe. kann mir jemand auf die sprünge helfen?
danke!

Code:
public class  Adventkalender extends MovieClip{
        
        public var map_mc:MovieClip = new MovieClip();
        public var maxFlocken:int = 50;
        public var flockenArray:Array = new Array();
        
           public function Adventkalender():void {             
              
              generateFlocken();
              load_map();
              this.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoved);            
           }
           
           private function load_map():void {
              var myLoader:Loader = new Loader();
              //myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preloading); 
            myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, setPicMap);
              myLoader.load(new URLRequest('pics/kalender.jpg'));
           }
           
           private function setPicMap(e:Event):void {
              map_mc.x = 0;
              map_mc.y = 0;
              var bitmapfile:Bitmap = Bitmap(e.currentTarget.content);
              map_mc.addChild(bitmapfile);
              addChild(map_mc);
           
           }
           
           private function mouseMoved(e:MouseEvent):void {
                 var sfX:Number  = (map_mc.width/stage.stageWidth);
                 var sfY:Number  = (map_mc.height/stage.stageHeight);
                 map_mc.x =  - (sfX * e.stageX)+e.stageX;
                 map_mc.y = - (sfY * e.stageY)+e.stageY;
           }
           
           
           private function generateFlocken() {
              var i:int = 0;
                 while (i< maxFlocken) {   
           
                       var flo:Flocke = new Flocke();
                       flo.x = int(stage.stageWidth * Math.random());
                       flo.y = int((stage.stageHeight/3) * Math.random());
                       flo.name = i+'flo';
                       flockenArray[i] = flo;                     
                       map_mc.addChild(flockenArray[i]);
                       map_mc.setChildIndex(map_mc.getChildByName(i+'flo'), map_mc.numChildren-1);
                       i++;
                 }
           }            
     }
greenboy ist offline   Mit Zitat antworten
Alt 26-07-2011, 12:28   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
wo und wann addChild's du myLoader?

trace("sicher der erste? "+map_mc.numChildren);
map_mc.addChildAt(bitmapfile,0);


gönne deinen flocken ein eigenes sprite


starte generateFlocken() nach dem laden des bildes. also nach setPicMap
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (27-07-2011 um 12:05 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 26-07-2011, 13:07   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: Wien
Beiträge: 26
das wars:

map_mc.addChildAt(bitmapfile,0);

dann funkts.
nun, die floggen sind movieclips, die exportiert wurden. das soltle schon so passen. denn wenn ich die map verschiebe, sollen sich die floggen auf ihr auch verschieben. daher hab ich die floggen direkt auf die map gesetzt.

thnx für die hilfe!
greenboy ist offline   Mit Zitat antworten
Alt 26-07-2011, 15:04   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
ich hab deinen Code mal etwas überarbeitet und die Änderungen Kommentiert
PHP-Code:
package //...
{
    
import flash.display.DisplayObject;
    
import flash.display.Sprite;
    
import flash.display.Loader;
    
import Flocke;    //package musst du ergänzen, falls nötig
    
    
public class Adventkalender extends Sprite    //wieso MC? reicht nicht auch ein Sprite?
    
{
        
//wieso public? nichts von ausserhalb dieser Klasse 
        //sollte direkt auf diese Eigenschaften zugreifen (können)
        
        //das hinzufügen des Datentyps in den Variablennamen finde ich selten sinvoll
        
private var map:Sprite = new Sprite();    //hier reicht in jedem Fall ein Sprite
        
private var maxFlocken:int 50;
        private var 
flocken:Array = [];    //ich bevorzuge diese Schreibweise; is kürzer :D

        
public function Adventkalender():void
        
{
            
generateFlocken();
            
loadMap();
            
this.addEventListener(MouseEvent.MOUSE_MOVEmouseMoved);            
        }

        
//in AS wird eigentlich nur camelCase verwendet (ausser bei Konstanten)
        
private function loadMap():void
        
{
            
//myIrgendwas? :-/
            
var loader:Loader = new Loader();
            
//loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preloading); 
            
loader.contentLoaderInfo.addEventListener(Event.COMPLETEsetPicMap);
            
loader.load(new URLRequest('pics/kalender.jpg'));
        }

        private function 
setPicMap(e:Event):void
        
{
            
//bitte aufräumen
            
e.currentTarget.removeEventListener(Event.COMPLETEsetPicMap);
//            e.currentTarget.removeEventListener(ProgressEvent.PROGRESS, preloading); 
            
            
map.0;
            
map.0;
            
//das casten nach Bitmap kannst du dir sparen, es sei denn, du willst hier noch was machen, 
            //wofür du explizit ein Bitmap benötigst (bspw auf bitmapData zugreifen)
            
var background:DisplayObject e.currentTarget.content;
            
map.addChildAt(background0);
            
addChild(map);
        }

        private function 
mouseMoved(e:MouseEvent):void
        
{
            var 
sfX:Number = (map.width/stage.stageWidth);
            var 
sfY:Number = (map.height/stage.stageHeight);
            
//eigentlich nur Geschmackssache, ich find das so herum schneller ersichtlich was dabei rauskommt
            
map.e.stageX -(sfX e.stageX);
            
map.e.stageY -(sfY e.stageY);
        }

        
//alle Funktionen sollten den Rückgabetyp definert haben.
        
private function generateFlocken():void
        
{
            
//ich find eine for-Schleife hier passender, zumal ich alles für ihren Ablauf im Kopf definiere,
            //und mir in der Schleife keine Gedanken mehr zu machen muss (bspw, dass ich ++i vergesse)
            
for(var i:int 0i<maxFlocken; ++i){
                var 
flocke:Flocke = new Flocke();
                    
flocke.int(stage.stageWidth Math.random());
                    
flocke.int((stage.stageHeight/3) * Math.random());
                    
//flocke.name; namen sich nur Schall und Rauch, und in AS3 imo überflüssig und kontraproduktiv

                
flocken[i] = flocke;
                
//du hast hier eine Referenz auf das Objekt selber, also nutz diese auch,
                //und hol diese nicht nochmal aus dem Array
                
map.addChild(flocke);
            }
        }            
    }

und jetzt noch eine Anmerkung, wofür benötigst du noch einen Container (map)? eigentlich kannst du map durch this ersetzen.
Oder kommt noch andere Programmlogik hinzu, die diese separaten Sprites nötig macht? Beispielsweise, damit du noch etwas zum AdventsKalender hinzufügst, was sich nicht mitbewegen soll?

nunja, letztlich hat jeder seinen eigenen Programmierstil. schau, was du aus meinen Anmerkungen für dich rausholen kannst/willst
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (26-07-2011 um 15:06 Uhr)
thomas_E ist offline   Mit Zitat antworten
Alt 27-07-2011, 11:40   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: Wien
Beiträge: 26
wow - da sag ich mal VIELEN DANK für die mühe und die hilfreichen tipps.
hab ich was dazugelernt.

nur eines: den konstruktor muss ich public machen, sonst gibts fehlermeldungen...
-> Ein Konstruktor kann nur als 'public' deklariert werden.
greenboy ist offline   Mit Zitat antworten
Alt 27-07-2011, 12:00   #6 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
Zitat:
Zitat von greenboy Beitrag anzeigen
nur eines: den konstruktor muss ich public machen, sonst gibts fehlermeldungen...
-> Ein Konstruktor kann nur als 'public' deklariert werden.
Thomas meinte nicht den Konstruktor, der kann 1.) nicht private sein (sprachliche Einschränkung) 2.) wäre es in diesem Fall auch nicht sinnvoll, da du ja von außen auf ihn zugreifen willst.
Der Konstruktor in seinem Code ist ja auch public.

Es ging viel mehr um die Variablen, die praktisch niemals public sein sollten.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 27-07-2011, 12:35   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: Wien
Beiträge: 26
alles klar. da hab ich meinen und den ausgebesserten code vertauscht.
greenboy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
hintergrund, setchildindex, vordergrund

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
hintergrund bild im container....hintergrund/vordergrund einstellungen nemaxtowni ActionScript 1 3 14-03-2004 21:59
hintergrund bild im container....hintergrund/vordergrund einstellungen nemaxtowni ActionScript 1 1 13-03-2004 19:58
swf als hintergrund (bild/ani) dermensch Flash MX 7 23-11-2003 11:54
bild in den hintergrund... illon Flash 4 und Flash 5 7 20-08-2002 23:41
Bild als Hintergrund nero23 Flash 4 und Flash 5 7 11-07-2001 16:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele