2010-07-31 14 views
1

J'ai une galerie d'images qui charge une image de détail, puis dessine une ligne à côté de l'image d'un côté en fonction des dimensions de l'image. Cliquez sur l'image pour revenir à la liste des vignettes de l'image principale, puis cliquez sur une vignette pour charger une autre image dans le porte-détail. Tout fonctionne bien, sauf que les lignes, plutôt que de disparaître lors du déchargement de l'image de détail, s'accumulent. Est-il possible d'effacer le contenu de lineDrawing MovieClip sans le retirer de la scène, afin que je puisse dessiner une nouvelle ligne? J'ai essayé removeChild sur le MovieClip, mais les lignes disparaissent complètement, même en plaçant lineDrawing.clear() en haut de la fonction setupDetail. Voici mon code (pertinent) jusqu'à présent, toute aide sera grandement appréciée, je suis perplexe!supprimer le contenu (ligne graphique) de MovieClip

var detailImage:Loader = new Loader(); 
var lineDrawing:MovieClip = new MovieClip(); 

setupDetail(); 

function setupDetail():void { 
    detail.visible = false; 
    detail.buttonMode = true; 
    detail.closeMessage.mouseEnabled = false; 

    detail.addChild(detailImage); 

    detailImage.contentLoaderInfo.addEventListener(Event.COMPLETE, fullyLoaded); 

    // make sure detail is above the gallery 
    addChild(detail); 

    detail.addEventListener(MouseEvent.CLICK, onCloseDetail, false, 0, true); 
} 

function fullyLoaded(evt:Event):void { 

    var imgHeight:int = evt.target.content.height; 
    var imgWidth:int = evt.target.content.width; 

    var hOffset:int = imgWidth + 5 + 27; 
    var vOffset:int = imgHeight + 5; 

    detail.addChild(lineDrawing); 

    if(imgWidth == 600) { 
     lineDrawing.graphics.lineStyle(3,0x9a9345); 
     lineDrawing.graphics.moveTo(28,vOffset); 
     lineDrawing.graphics.lineTo(626,vOffset); 
    } 
    else if(imgHeight == 600) { 
     lineDrawing.graphics.lineStyle(3,0x9a9345); 
     lineDrawing.graphics.moveTo(hOffset, 1); 
     lineDrawing.graphics.lineTo(hOffset, 599); 
    } 
} 

function onCloseDetail(evt:MouseEvent):void { 

    // only allow it to be closed if it is at least 90% opaque 
    if (detailImage.alpha>.9){ 
     detailImage.unload(); 
     TweenLite.to(detail,.5, {autoAlpha:0}); 
     detailImage.unload(); 
     detail.visible = false; 
    } 
} 

Répondre

2
lineDrawing.graphics.clear() 
+0

oh wow, merci, qui ont parfaitement fonctionné placé dans la fonction onCloseDetail. Merci encore!!! –