2010-04-19 3 views
3

Dans Flex3, j'ai pu compiler du code as3 pur et utiliser des balises "embed" pour charger des images. Cela a été fait par Flex en créant une classe BitmapAsset.comment incorporer des assets bitmap as3 purs avec flex4 (travaillé avec flex3)

Je peux toujours le faire dans Flex4.

Cependant, il y avait une astuce pour fakeout flex3 et utiliser ma propre classe mx.core.BitmapAsset pour supprimer certaines choses inutiles que BitmapAsset de Flex apporte avec lui. Ceci est décrit ici: http://www.ultrashock.com/forums/flex/embed-flex-assets-without-using-flex-123405.html

Malheureusement, je ne peux pas obtenir ces astuces pour travailler avec Flex4 et obtenir des fichiers plus petits. Je me retrouve avec l'erreur "VerifyError: Erreur # 1014: Class mx.core :: BitmapAsset n'a pas pu être trouvé."

Cette erreur me conduit à ce forum, et une solution comme décrit là: http://tech.groups.yahoo.com/group/flexcoders/message/148762

Suivant cet avis, j'ajouter -static-link-exécution-partagés aux bibliothèques = true, et mes charges swf sans erreur ... mais cela signifie que je suis en train de charger dans les morceaux de la structure flexible que je voulais omettre (et la taille du fichier le dit aussi).

Existe-t-il un meilleur moyen de tromper flex4 quand il s'agit d'utiliser Embed?

Répondre

1

J'ai créé un projet de test dans Flex 4 avec [Embed] et faux BitmapAsset.as et ne peut pas voir l'exception:

package 
{ 
import flash.display.Sprite; 
public class EmbedTest extends Sprite 
{ 
    public function EmbedTest() 
    { 
     addChild(new smile()); 
    } 

    [Embed("smile.png")] 
    private var smile:Class; 
} 
} 

Essayez d'ajouter -link-report link-report.xml option du compilateur et vérifiez le fichier link-report.xml dans bin-debug. Avez-vous BitmapAsset.as là? Si non, vous l'avez peut-être exclu par externs, external-library-path ou load-externs.

+0

merci pour cela - retourné à ce problème aujourd'hui des mois plus tard. J'utilisais un faux swx mx pour divers projets qui ... pour des raisons inconnues ... quand compilé en utilisant flex4 et utilisé dans les projets flex4 ne fonctionnerait pas. J'ai déplacé les fichiers dans les différents projets eux-mêmes et tout fonctionne bien. Merci pour le contrôle de santé mentale de cela. Très appréciée. – jedierikb

3

Est-ce que quelque chose comme le travail?

[Embed(source="yourImage.jpg")] 
private var ImageC:Class; 
private var image = new ImageC(); 

Keith Peters a une belle article sur le sujet.

+0

aussi, est-ce un actionscript ou un projet flexible? Peut-être que pour les projets flex, il utilise par défaut BitmapAsset –

+0

Oui, c'est la technique pour intégrer des assets lors de la compilation de projets as3 en utilisant les outils en ligne de commande fournis avec flex. Les ressources intégrées de cette manière requièrent certaines classes de la structure flexible. Ce premier lien dans mon message révèle une technique pour réduire la taille de ces classes, ce qui entraîne des fichiers swf de fichiers plus petits. L'incorporation d'actifs avec flex4 a donné lieu à des fichiers swf légèrement plus grands et l'ancienne technique du premier lien ne fonctionne plus. – jedierikb

+1

@jdierkb Je me demande si le réducteur de Joa Ebert travaille sur des swfs générés par flex4 (http://blog.joa-ebert.com/2009/08/08/reducer/). Devrait être quelque chose comme java -jar reducer.jar -input old.swf -output new.swf à partir Terminal/Invite de commandes. Vous aurez besoin de java 1.6, donc ça devrait aller sur le PC, mais sur osx vous aurez besoin de la mise à jour java d'Apple et ça pourrait être pratique pour exporter le chemin dans ~/.bash_profile (export PATH =/System/Library/Frameworks /JavaVM.framework/Versions/1.6/Commands:$PATH). Si cela fonctionne, ce serait une solution pour la taille de fichier, mais pas pour le problème mx. *. –

Questions connexes