2009-03-09 7 views
2

J'ai un clip vidéo sur la scène tournée de 10 °, avec une zone de texte dynamique à l'intérieur. Je chargement du texte, avec une image intégrée dans ainsi:Activer le lissage sur une image importée pivotée dans une zone de texte dynamique en flash (AS3)

(Utiliser le 1er cadre AS3 pour l'instant, par la suite ce sera dans une classe.)

var txt:String = '<img src="foo.gif" id="myImg1" /><p>Lorem ipsum</p>'; 

my_mc.txtBox.htmlText = txt; 

Ce qui fonctionne très bien. Le texte est placé, et même entoure bien l'image. Le problème est que l'image a l'air horrible. J'ai trouvé la propriété Bitmap.smoothing, mais je n'arrive pas à accéder à l'image pour définir la propriété. J'essaie ce code:

var img:DisplayObject = my_mc.txtBox.getImageReference('myImg1'); 
if (typeof(img) != 'undefined') { 
    img.contentLoaderInfo.addEventListener(Event.COMPLETE, onHtmlImageLoaded); 
} 

function onHtmlImageLoaded(event:Event):void{ 
    event.target.removeEventListener(Event.COMPLETE, onHtmlImageLoaded); 
    Bitmap(event.target.content).smoothing = true; 
} 

la ligne 'img.contentLoaderInfo ...' jette cette erreur, si:

1119: Access of possibly undefined property content through 
a reference with static type flash.display:DisplayObject. 
+0

Pour une raison inconnue, j'ai été amené à naviguer ici, alors laissez-moi faire ce commentaire apparemment hors de propos: vous dites "plus tard, je vais en faire un cours" mais ce n'est pas une bonne façon de travailler. On s'en fout? Eh bien, si vous en avez fait une classe FIRST, votre IDE (FlashDeveloper ou FlexBuilder, YES, même pour 100% de travail IDE Flash), grâce à la saisie semi-automatique, vous informe (si vous faites les moulages inutiles) ce qui est acceptable pour cet événement. Ligne target.content. Notez mon commentaire ci-dessous sur la réponse de David ... En tout cas, j'ai 3 mois de retard, donc je vais juste disparaître :) –

Répondre

2

essayez ceci:

var img:Loader = Loader(tx.getImageReference('proceso')); 
img.contentLoaderInfo.addEventListener(Event.COMPLETE, onHtmlImageLoaded); 

function onHtmlImageLoaded(event:Event):void{ 
    event.target.removeEventListener(Event.COMPLETE, onHtmlImageLoaded); 
    Bitmap(event.target.content).smoothing = true;  
} 

c'est du travail.

0

Je voudrais essayer d'utiliser la classe BitmapData pour l'image, et appliquer lissage à cela.

+0

Pouvez-vous être un peu plus précis comment vous feriez cela? Je n'import pas explicitement l'image (et je ne veux pas si je peux l'éviter). J'essaye d'atteindre le html entrant et de trouver n'importe quelles images là et appliquer le lissage à eux. – sprugman

1

Je pense que vous êtes tout simplement manquer un casting à Loader dans votre gestionnaire d'événements:

Bitmap(Loader(event.target).content).smoothing = true;  

Edit: Faites la même chose lors de l'enregistrement du gestionnaire d'événements:

Loader(img).contentLoaderInfo.addEventListener(Event.COMPLETE, onHtmlImageLoaded); 
+0

J'ai essayé, mais je ne suis pas surpris que cela n'ait pas fonctionné - l'erreur est lancée sur la ligne qui configure le gestionnaire d'événements, donc il n'atteint jamais cette ligne de code. – sprugman

+0

@Sprugman, quoi ?! L'erreur fait référence à une méthode/propriété inexistante "content" donc c'est définitivement cette ligne "Bitmap (event.target.content) .smoothing = true;" cela échoue. L'enregistrement de l'événement, à condition qu'il envoie un événement: Evénement, devrait fonctionner correctement dans tous les cas. Mais j'ai 3 mois de retard pour la fête, donc l'important est que vous l'ayez résolu .... :) –

Questions connexes