| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| 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]);
}
} |
| | |
| | #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.
|
| | |
![]() |
| Lesezeichen |
| Stichworte |
| addchild, new loader, removechildat, urlrequest |
| Themen-Optionen | |
| Ansicht | |
| |
Ä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 |