Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-05-2010, 19:08   #1 (permalink)
mug
Neuer User
 
Registriert seit: May 2010
Beiträge: 2
Bild im Hinergrund austauschen ohne Index zu ändern

Ich habe einen kleinen Produktdesigner in AS3 geschrieben. Alles funktioniert, bis auf das Produktbild im Hintergrund auszutaschen. Man muss sich das so vorstellen: Auf eine Bühne wird ein Bild (Produktbild) geladen > darauf wird ein Rahmen platziert (druckbarer Bereich) > und darin können durch den User Motive (dyn. Movieclips) platziert werden.

Soweit so gut - funktioniert! Wenn ich nun aber das Produktbild neu lade (function reload_images()), weil es eine andere Farbe bekommen soll, verschwinden die bereits platzierten Motive in den Hintergrund! Sie sind noch da, aber nicht ansprechbar und nur sichtbar wenn das Produktbild winzig ist (test) Den Index ändern geht nicht. Das Motiv neu platzieren geht auch nicht!

Ich bin verzewiefelt...

Code:
		//Laden der Produkt- und der Produktthumb Bilder
		private function load_product_images(c:String):void
		{
			for (var i:int = 0; i < _pfad_product.length; i++) 
			{		
				_load_img_prod = new Loader();
				_loaders_img_prod.push(_load_img_prod);
				_loaders_img_prod[i].load(new URLRequest(_pfad_product[i]));
				_loaders_img_prod[i].contentLoaderInfo.addEventListener(Event.COMPLETE, showImages_Main);
				
				//Thumbs nur anzeigen wenn mehr als 1 Ansicht vorhanden
				if (_pfad_product.length > 1)	{
					_load_img_prod_thumb = new Loader();
					_loaders_img_prod_thumb.push(_load_img_prod_thumb);
					_loaders_img_prod_thumb[i].load(new URLRequest(_pfad_product_thumb[i]));
					_loaders_img_prod_thumb[i].contentLoaderInfo.addEventListener(Event.COMPLETE, showImages_Thumb);
				}
			}	
		}
		private function reload_images(c:String):void 
		{
			//_mc_views[_num_views].removeChildAt(0);
			//_mc_views[_num_views].addChild(_motiv_mc);
			//_motiv_mc.addChild(_mc_views[_num_views].getChildAt(2));		
			
			for (var i:int = 0; i < _pfad_product.length; i++) 
			{
				//_load_img_prod = new Loader();
				//_loaders_img_prod.push(_load_img_prod);
				
				//Variable zum hinzufügen des Farbkürzels
				var shortcolor
				switch (c) 
				{
					case "white": shortcolor = "."; break;
					case "black": shortcolor = "-sc."; break;
					case "red": shortcolor = "-ro."; break;
					case "green": shortcolor = "-gr."; break;
					case "blue": shortcolor = "-bl."; break;
					case "yellow": shortcolor = "-ge."; break;
				}
				//Andere Farbe des Produktes laden		
				_colors_path = _pfad_product[i].split(".");
				_colors_path_new = _colors_path[0] + shortcolor + _colors_path[1];
				_loaders_img_prod[i].load(new URLRequest(_colors_path_new));
				
					
				//Thumbs nur anzeigen wenn mehr als 1 Ansicht vorhanden
				if (_pfad_product.length > 1)	{
					//Andere Farbe des Produktes laden		
					_colors_path = _pfad_product_thumb[i].split(".");
					_colors_path_new = _colors_path[0] + shortcolor + _colors_path[1];	
					//debug(_colors_path_new);
					_loaders_img_prod_thumb[i].load(new URLRequest(_colors_path_new));
				}
			}
			
			//##############################################################################################
			//debug(_mc_views[_num_views].numChildren);
			//var top = _mc_views[_num_views].numChildren -1;
			//_mc_views[_num_views].setChildIndex(_mc_views[_num_views].getChildAt(2),top);		
		}
		//Anzeigen der Produkt Bilder
		private function showImages_Main(e:Event):void 
		{
			//Anlegen der MovieClips für die verschiedenen Ansichten
			_mc_views = new Array();
			
			for (var i:int = 0; i < _pfad_product.length; i++) 
			{
				frame_mc = new MovieClip();
				frame_mc.name = "product_view" + (i +1);
				frame_mc.addChild(_loaders_img_prod[i]);
				_mc_views.push(frame_mc);
				
				_mc_views[i].x = _center_Point.x - (_mc_views[i].width / 2); 
				_mc_views[i].y = _center_Point.y - (_mc_views[i].height / 2);
				
				addChild(_mc_views[i]);
				_mc_views[i].visible = false;
			}
			
			_num_views = 0;
			_mc_views[0].visible = true;	
			_create_printable_area(_pfad_product.length);
			
			//debug(_motiv_mc.numChildren);
		}
		//Anzeigen der Produktthumb Bilder
		private function showImages_Thumb(e:Event):void 
		{
			//Anlegen der Sprites für die Vorschaubilder der verschiedenen Ansichten
			
			//Container für Views
			_views_mc = new MovieClip();
			var bitmap_prod:BitmapData; 
			_views_mc.x = 0;
			_views_mc.y = 0;
			
			for (var i:int = 0; i < _pfad_product_thumb.length; i++) 
				{
					//debug(i);
					_views = new Sprite();
					_views.buttonMode = true;
					_loaders_img_prod_thumb[i].name = i;
					_views.name = _loaders_img_prod_thumb[i].name ;					
					
					bitmap_prod = new BitmapData(50,50,false);
					bitmap_prod.draw(_loaders_img_prod_thumb[i], new Matrix());
					
					_views.graphics.beginBitmapFill(bitmap_prod, null, false);
					_views.graphics.lineStyle(_borderSize, _borderColor);
					_views.graphics.drawRoundRect(0, 0, _loaders_img_prod_thumb[i].width, _loaders_img_prod_thumb[i].height, 7, 7);
					_views.graphics.endFill();
									
					_views.y = (i * 73) + 50;
					
					//Alle Instancen löschen
					removeChildAt(_pfad_product_thumb.length + 1);
					//Neue Instancen anlegen
					addChildAt(_views_mc, _pfad_product_thumb.length + 1);
					_views_mc.addChild(_views);
					_views.addEventListener(MouseEvent.CLICK, show_other_View);
					
				}
			//debug(_views_mc.numChildren);
		}
		//Erzeugen des Druckbaren Bereichs
		private function _create_printable_area(num_of_views:uint):void
		{
			_print_Sprites = new Array();
			var print_area:Sprite; 
			
			for (var i:int = 0; i < num_of_views; i++) 
			{
				print_area = new Sprite(); 
				
				print_area.graphics.beginFill(0xCCCCCC,0);
				print_area.graphics.lineStyle(1, _borderColor);
				print_area.graphics.drawRect(0, 0, _product_area_coords[i][2], _product_area_coords[i][3]);
				print_area.graphics.endFill();
				print_area.x = (0 + _mc_views[i].width / 2) + (parseFloat(_product_area_coords[i][0]));
				print_area.y = (0 + _mc_views[i].height /2) + (parseFloat(_product_area_coords[i][1]));
		
				_print_Sprites.push(print_area);
			}
			
			for (var j:uint = 0; j < _print_Sprites.length; j++) 
			{	
				_mc_views[j].addChild(_print_Sprites[j]);		
			}
		}
mug ist offline   Mit Zitat antworten
Alt 18-05-2010, 09:51   #2 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Warum ladest/removest/addest Du denn immer alle Bilder inkl. Thumbnails neu? Leg doch am Anfang einmal ein Sprite oder Bitmap für das Hauptbild in den Hintergrund und ändere dann darin nur die BitmapData mit dem nachgeladenen Bild. Dann musst Du nix removen oder adden oder sonstwie an der Anzeigeliste rumdrehen.
T.Decay ist offline   Mit Zitat antworten
Alt 28-05-2010, 17:05   #3 (permalink)
mug
Neuer User
 
Registriert seit: May 2010
Beiträge: 2
BitmapData

Wie soll das gehn
Ich glaub ich steh im Wald!
mug ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
addchild, new loader, removechildat, urlrequest

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
in einem MC per AS ein bild austauschen? sengaja ActionScript 1 3 17-12-2008 13:49
Z-index in Flash mit Button ändern?? riazBERLIN Flash Einsteiger 4 19-02-2007 16:51
Decopilieren bzw. ein Bild austauschen emsländer Flash MX 2004 3 26-09-2004 16:35
Bild austauschen mit As Christian82 ActionScript 1 3 28-06-2003 20:25
Bild austauschen und... Mike5 Flash 4 und Flash 5 2 03-05-2002 12:26


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