1 pièce(s) jointe(s)
Uploader une image et la remplacer dans un movieclip
bonjour a vous tous, vaudou de la programation AS3
Voila ce que je voudrais faire : J‘ai un movieclip nommé block, dans lequel il y a une image. Le movieclip block est dragable.
Lorsque je clique sur un bouton nommé btnbrowse, on choisit une image sur le disque local, on l‘upload, et on l‘affiche dans le movieclip block. J‘aimerai que la nouvelle image remplace l‘ancienne. On doit pouvoir répéter cette opération ( choisir, loader, remplacer et afficher ) autant de fois que l‘on veut.
Mon problème : l‘upload fonctionne parfaitement, mais l‘image vient par dessus l‘ancienne ( et pas vraiment aux meme coordonnees )
Par avance merci a tous ceux qui voudront bien se pencher sur mon probleme.
Je vous donne le code source :
Code:
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
| stop();
// Cette fonction permet de drag le block
function dragblock(event:MouseEvent):void
{
block.startDrag();//le block suit le pointeur de souris
}
block.addEventListener(MouseEvent.MOUSE_DOWN, dragblock);//Quand j'appuie sur le bouton de la souris
// Cette fonction permet de drop le block
function dropblock(event:MouseEvent):void
{
block.stopDrag();//le block s'arrête là ou il est
}
block.addEventListener(MouseEvent.MOUSE_UP, dropblock);//Quand je relache le bouton de la souris
// // Cette fonction permet de charger une image
import flash.events.MouseEvent;
import flash.events.Event;
import flash.net.FileReference;
import flash.display.Loader;
import flash.display.Sprite;
var fileRef:FileReference;
function DirectUpload(event:MouseEvent):void
{
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, selectFile);
fileRef.addEventListener(Event.OPEN, openFile);
fileRef.addEventListener(Event.COMPLETE, complete);
fileRef.browse([new FileFilter("All Formats (*.jpg,*.gif,*.png,*.swf)", "*.jpg;*.gif;*.png;*.swf", "JPEG;jp2_;GIFF;SWFL")]);
}
function selectFile(e:Event):void {
fileRef.load();
}
function openFile(e:Event):void {
}
function complete(e:Event):void
{
var data:ByteArray = fileRef.data;
// on crée un contenant pour le fichier chargé
var loader:Loader = new Loader();
loader.loadBytes(data);
// On ajoute le contenant au movieclip Block
block.addChild(loader);
}
btnbrowse.addEventListener(MouseEvent.CLICK,DirectUpload); |
marche pas le removechild
merci pour ta réponse
je pense avoir déjà essayé le removechild meme avec un systeme.gc (ramasse miettes ) mais je vais le refaire des fois que... je vous tiens au courant
fonctionne pas avec removechild
rebonjour,
j'ai fait 3 tests avec removechild avec les codes ci dessous et ca ne fonctionne toujours pas :
Dans le premier test on supprime le block, l'ancienne image disparait mais, la nouvelle n'apparait pas
Dans le seconde test, on supprime le block, on le remet sur la scène, mais évidemment l'ancienne et la nouvelle image s'affichent.
Dans le 3eme test, on supprime le block, on l'efface définitevement, puis on le remet : l'ancienne image disparait et on a le message d'erreur suivant :
Citation:
TypeError: Error #2007: Le paramètre child ne doit pas être nul.
at flash.display::DisplayObjectContainer/addChild()
at test_fla::MainTimeline/complete()
J'ai juste repris ici la partie de code qui nous interesse :
1ER test
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| function complete(e:Event):void
{
var data:ByteArray = fileRef.data;
// on crée un contenant pour le fichier chargé
var loader:Loader = new Loader();
removeChild(block);
loader.loadBytes(data);
// On ajoute le contenant au movieclip Block
block.addChild(loader);
}
btnbrowse.addEventListener(MouseEvent.CLICK,DirectUpload); |
2EME TEST
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function complete(e:Event):void
{
var data:ByteArray = fileRef.data;
// on crée un contenant pour le fichier chargé
var loader:Loader = new Loader();
removeChild(block);
addChild(block);
loader.loadBytes(data);
// On ajoute le contenant au movieclip Block
block.addChild(loader);
}
btnbrowse.addEventListener(MouseEvent.CLICK,DirectUpload); |
3 EME TEST
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function complete(e:Event):void
{
var data:ByteArray = fileRef.data;
// on crée un contenant pour le fichier chargé
var loader:Loader = new Loader();
removeChild(block);
block = null;
addChild(block);
loader.loadBytes(data);
// On ajoute le contenant au movieclip Block
block.addChild(loader);
}
btnbrowse.addEventListener(MouseEvent.CLICK,DirectUpload); |