1&1 Webhosting
Flashhilfe.de - Flash Community

Embed Font mit Actionscript für Flash Builder 4 | Flex Gumbo [Flash 10]

Forum > Apache Flex / Adobe AIR > Embed Font mit Actionscript für Flash Builder 4 | Flex Gumbo

 


AntwortenRegistrieren Seite1

 15.04.2010, 16:35 
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Embed Font mit Actionscript für Flash Builder 4 | Flex Gumbo
Hallo Leute,

hab hier ein Problem, ich weiß nicht warum aber ich bekomme hier keine Schriftart in Flash Builder 4 eingebettet mit Actionscript.
Ich habe eine AS-Klasse geschrieben un will die nun in Flex aufrufen.. nix großartiges, nur einen MovieClip mit Click-Funktion.
Aber sobald ich beim Textfeld embedFonts auf true setze geht nischt mehr..
Irgendwer eine Idee?

ActionScript:
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
[Embed(source="assets/normal.otf", fontFamily="Regular")]
      public var Regular:Class;


public function create(knotenpunkt:int, subknoten:int):void{
         var menueMc:MovieClip = new MovieClip();
         addChild(menueMc)
         
         var format:TextFormat      = new TextFormat();
         format.font            = "Regular";
         format.color            = 0xFFFFFF;
         format.size            =10.5;
         //format.leading         = 5;
         format.letterSpacing       = .3;
         format.kerning = true;
         
         var txt:TextField         = new TextField();
         txt.defaultTextFormat      = format;
         txt.embedFonts         = true;
         txt.autoSize            = TextFieldAutoSize.LEFT;
         txt.antiAliasType         = AntiAliasType.ADVANCED;
         txt.text               = "TESTTEXT"

         menueMc.addChild(txt);
      }

hab das auch schon mit "bar:String" anstatt public var Regular:Class; versucht, nichts geht
 15.04.2010, 16:51Re1
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4883
Wohnort: zuhaus
Registriert: Apr 2004

hi,
ich würde das über einen style lösen...

css:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
@font-face
{
  font-family: "Regular";
  src: url("assets/normal.otf");
}

.deinStyle{
   font-family : Regular;
   color    : #ffffff;
     fontSize : 10;
}


AS:

ActionScript:
1txt.styleName = "deinStyle";


dann kannst du auch die schrift ändern ohne die komplette applikation neu zu kompilieren ;-)
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 15.04.2010, 17:10Re2
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

mh Flash Builder meint das styleName eine nicht definierte Eigenschaft wäre..

Ich denke das liegt da dran, dass die CSS Datei "eingebunden" wird in der Hauptapplication
<fx:Style source='labelClass.css'/>

muss ich evtl noch etwas in die AS Datei Importieren?
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 15.04.2010, 17:58Re3
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4883
Wohnort: zuhaus
Registriert: Apr 2004

nein, du musst die css als swf exportieren und die swf dann laden mit StyleManager.load....
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 16.04.2010, 13:38Re4
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

Oh man.. jetz kommt ne super doofe Frage..
Wie soll ich das denn exportieren? Ich kenne das nur aus Flash heraus mit Bilbliothek etc.. aber nicht mit dem Flash Builder.. bin erst ein paar Tage mit dem Programm beschäftigt :-/
 16.04.2010, 14:32Re5
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4883
Wohnort: zuhaus
Registriert: Apr 2004

rechtsklick auf die css -> export to swf (zumindest war es in flexbuilder 3 noch so...)
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 
nicht sichtbar bei eingeloggten Mitgliedern
 16.04.2010, 14:50Re6
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

ahhhhhh!!!! ok.. sehr coole Funktion!! DAnke schon mal hier an dieser Stelle!
Wenn ich zu den Rest gekommen bin, sag ich nochmal bescheid wie es gelaufen ist!!
 16.04.2010, 18:12Re7
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

mh hat nicht geklappt..
hab schon mehrere Sachen versucht

ich bekomme auch inzwischen eine tolle Ausgabe:

[SWF] ..\bin-debug\fontCss.swf - 196.879 Byte nach Dekomprimierung
[0] name:Regu, style: regular, type: embeddedCFF
[1] name:Regular, style: regular, type: embeddedCFF
[2] name:Regular, style: regular, type: embeddedCFF
[3] name:Regular2, style: regular, type: embedded

also eingebettet sind die alle denk ich nur ich kann machen was ich will, der greift nicht auf die zu!
Sobald ich txt.embedFonts auf true setze geht da nischt mehr.. aus dem StyleManager bekomm ich die Farbe etc auch ausgegeben:

16777215
Regular
10

Aber, wie komm ich denn da nun dran?!


ActionScript:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
package
{
   import com.greensock.TweenMax;
   import com.greensock.easing.*;
   
   import flash.display.*;
   import flash.events.*;
   import flash.net.URLLoader;
   import flash.net.URLRequest;
   import flash.system.Capabilities;
   import flash.text.AntiAliasType;
   import flash.text.Font;
   import flash.text.StyleSheet;
   import flash.text.TextField;
   import flash.text.TextFieldAutoSize;
   import flash.text.TextFormat;
   
   import mx.controls.Button;
   import mx.core.UIComponent;
   import mx.core.UITextField;
   import mx.events.StyleEvent;
   import mx.styles.*;
   
   import spark.primitives.Line;

   
   
   public class CreateMenue extends UIComponent
   {
      public var xList:XMLList = new XMLList();
      [Embed(source="assets/normal.otf", fontFamily="Regular")]
      public var reg:String;
      
      private var maLine:Line
      private var foo2:Shape;
      public var cap:String;
      public var maskMc:MovieClip
      public var maskShape:Shape
      public var menueMc:MovieClip
      public var txt2:Button
      
      private var cssDecl:CSSStyleDeclaration
      
      

      public function CreateMenue(wert:String){

         var xmlLoader:URLLoader=new URLLoader  ;
         var xmlData:XML = new XML;
         //StyleManager.loadStyleDeclarations( 'fontCss.swf' )
         var e:IEventDispatcher = StyleManager.loadStyleDeclarations('fontCss.swf');

         
         cssDecl= StyleManager.getStyleDeclaration(".deinStyle");
         trace(cssDecl.getStyle("color"))
         trace(cssDecl.getStyle("fontFamily"))
         trace(cssDecl.getStyle("fontSize"))

         e.addEventListener(StyleEvent.COMPLETE,styleLoadedHandler);


         xmlLoader.addEventListener(Event.COMPLETE,LoadXML);
         
         xmlLoader.load(new URLRequest(wert));
         
         function LoadXML(e:Event):void {
            
            maskShape= new Shape();
            maskShape.graphics.beginFill(0xC8247A);
            maskShape.graphics.drawRect(0,0, stage.stageWidth, 200);
            maskShape.graphics.endFill();
            maskShape.alpha=1
            
            maskMc= new MovieClip();
            maskMc.addChild(maskShape)   
            
            mask = maskMc 
            addChild(maskMc)
            maskMc.y=-160;
            
            xmlData=new XML(e.target.data);
            xList = xmlData.menue;
            cap= Capabilities.language;
            for (var i:int = 0; i < xList.length(); i++ ) {
               trace(i)
               if(cap == "de"){
                  for(var ii:int = 0; ii < xList[0].item.length(); ii++ ) {
                     create(0,ii)
                  }
               }else  {
                  for(var ji:int = 0; ji < xList[1].item.length(); ji++ ) {
                     create(1,ji)
                  }
               }
               
            }
         }
      }
      
      private function styleLoadedHandler(event:StyleEvent) : void {
         var embeddedFonts:Array = Font.enumerateFonts(false);
         embeddedFonts.sortOn('fontName',Array.CASEINSENSITIVE);
         for(var i:Number = 0; i < embeddedFonts.length; i++){
            var item:Font = embeddedFonts[i];
            trace("[" + i + "] name:" + item.fontName + ", style: " + item.fontStyle + ", type: " + item.fontType);
         }
      }
      public function create(knotenpunkt:int, subknoten:int):void{
         menueMc= new MovieClip();
         maLine= new Line();
         var subMenueMc:MovieClip = new MovieClip();
         addChild(menueMc)
         menueMc.addChild(subMenueMc)
         subMenueMc.y=50;
         subMenueMc.x=menueMc.x;
      
         menueMc.buttonMode=true;
         
         addButtons(menueMc,xList[knotenpunkt].item[subknoten].@name,0,105*subknoten);
         
         var container:Sprite = new Sprite();
         
         addChild(container);
         
         container.blendMode="multiply"
         container.graphics.lineStyle(1,0xcccccc);
         container.graphics.moveTo(105*subknoten,-80);
         container.graphics.lineTo(105*subknoten, 300);
         container.alpha=.5;
         
         for(var s:int = 0; s < xList[knotenpunkt].item[subknoten].item.length(); s++ ) {
            addButtons(subMenueMc, xList[knotenpunkt].item[subknoten].item[s].@name,30*s,105*subknoten);
         }
      }
      public function initia(wert:Number,d:Number):void{
         TweenMax.killAll(false, false, true);
         TweenMax.killTweensOf(maskMc)
         TweenMax.to(maskMc,.5,{delay:d,y:wert, ease:Sine.easeInOut})
      }
      private function addButtons(target:Object,t:String,ty:Number,tx:Number):void{
         var conty:MovieClip = new MovieClip();
         target.addChild(conty)
         conty.mouseChildren=false;
         conty.alpha=.8;
         
            
            function getinv(e:MouseEvent):void{
               TweenMax.to(MovieClip(conty), .3,{alpha:1, ease:Sine.easeInOut})
            }
            function getvis(e:MouseEvent):void{
               TweenMax.to(MovieClip(conty), .3,{alpha:8, ease:Sine.easeInOut})
            }
            
         var foo2:Shape = new Shape();
         foo2.graphics.beginFill(0xC8247A);
         foo2.graphics.drawRect(0, 0, 100, 25);
         foo2.graphics.endFill();
         foo2.alpha=.0
         
         
         var format:TextFormat      = new TextFormat();
         format.font               = cssDecl.getStyle("font-family");
         format.color            = cssDecl.getStyle("color")//0xC8247A//=0xC8247A ;
         format.size                =11;

         var txt: UITextField         = new UITextField ();
         txt.defaultTextFormat     = format;
         //txt.embedFonts            = true;
         //txt.styleName(cssDecl);
         
         txt.autoSize            = TextFieldAutoSize.LEFT;
         txt.antiAliasType         = AntiAliasType.ADVANCED;
         txt.text               = t
         txt.mouseEnabled= false;
         txt.x=5
         txt.alpha=.5
         txt.y=txt.x
         foo2.width=txt.width+10
         conty.addChild(foo2);
         conty.addChild(txt);
         conty.y = ty;
         conty.x = tx;
         conty.addEventListener(MouseEvent.MOUSE_OVER, getvis)
         conty.addEventListener(MouseEvent.MOUSE_OUT, getinv)
      }
   }
}


Ich weiß das Script ist ehr subOptimal aber es funktioniert zumindest Lokal...
Geändert von Nova969 am 16.04.10 um 18:12 Uhr

 16.04.2010, 18:15Re8
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4883
Wohnort: zuhaus
Registriert: Apr 2004

embedFonts musst du nicht auf true stellen...

wie lädst du denn den style? schon über den stylemanager ? und apply auf true (2ter parameter in der StyleManager.load....)?
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 16.04.2010, 18:30Re9
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

jo lad ich schon mit dem StyleManager

ActionScript:
1
2
var e:IEventDispatcher = StyleManager.loadStyleDeclarations('fontCss.swf',true);
cssDecl= StyleManager.getStyleDeclaration(".deinStyle");


und wende das dann so an..

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var format:TextFormat      = new TextFormat();
format.font               = cssDecl.getStyle("font-family");
format.color            = cssDecl.getStyle("color")//0xC8247A//=0xC8247A ;
format.size                =11;

var txt: UITextField      = new UITextField ();
txt.defaultTextFormat     = format;
//txt.styleName=cssDecl;
txt.autoSize            = TextFieldAutoSize.LEFT;
txt.antiAliasType         = AntiAliasType.ADVANCED;
txt.text               = t
txt.mouseEnabled= false;
txt.x=5
txt.alpha=.5
Geändert von Nova969 am 16.04.10 um 18:30 Uhr

 16.04.2010, 18:39Re10
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4883
Wohnort: zuhaus
Registriert: Apr 2004

wieso denn UITextField ?

nur:
ActionScript:
1var e:IEventDispatcher = StyleManager.loadStyleDeclarations('fontCss.swf',true);

und:
ActionScript:
1
2
var txt:Text = new Text();
txt.styleName = "deinStyle";


getStyleDeclaration ist überflüssig....
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 16.04.2010, 18:53Re11
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

dann wird kein Text mehr angezeigt :-/

kann es sein das ich was im Compiler einstellen muss?

achso!
evtl ist das hier auch wichtig..

ich rufe das in lash builder dann so auf

ActionScript:
1
2
3
4
var menueUI:UIComponent = new UIComponent();
menu = new CreateMenue("menue.xml");
menueUI.addChild(menu);
menueContainer.addElementAt(menueUI,0);
Geändert von Nova969 am 16.04.10 um 18:55 Uhr

 16.04.2010, 19:34Re12
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4883
Wohnort: zuhaus
Registriert: Apr 2004

hast du denn auch eine breite und höhe angegeben für menueUI/menu ?
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 16.04.2010, 19:52Re13
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

ne, hatte ich noch nicht, aber das hat auch nichcts gebracht.
ich packe in das MenueUI / menu auch selbst gezeichnete linien rein, die positioniert er alle richtig und stellt die auch dar.
kann es evtl irgendwie an der maske liegen?
 19.04.2010, 10:33Re14
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

ich hab das immer noch nich hin bekommen..

hab nun eine swf generiert mit einem Textfeld auf de Bühne und verwende das nun mit eingebetteter Schriftart in Flex.. -.-
is zwar doof aber so geht es zumindest..

Trotzdem danke für Deine Bemühungen! Vielleicht fällt Dir ja noch eine bessere Lösung ein ^^
 19.04.2010, 11:42Re15
Benutzerbild von Nova969
Beiträge: 69
Registriert: May 2005

Themenautor/in

SooOOooOoo.. ich hab es nun doch hin bekommen ^^
Also ich hab ja bereits schon Schriftarten in die Flex Datei eingebunden und die nun ausgelesen .. und dann das einfach auf mein TextFormat angewandt.. -.-

Der Grund warum es am Anfang nicht ging!! Ist,

[0] name:Regu, style: regular, type: embeddedCFF
[1] name:Regular, style: regular, type: embeddedCFF
[2] name:Regular, style: regular, type: embeddedCFF
[3] name:Regular2, style: regular, type: embedded


das es keine embeddedCFF sein darf.. ;)

So habe ich die eingebunden:

ActionScript:
1
2
3
4
5
6
7
8
9
10
@font-face {
   src: url("assets/normal.otf");
   embedAsCFF: true;
   fontFamily: Regular;
}
@font-face {
   src: url("assets/normal.otf");
   embedAsCFF: false;
   fontFamily: Regular2;
}
 
Themen
Ähnliche Beiträge zum Thema
Schrift-Prob in Flex [Flash 10] 02.12.2009 - longCrew
 
AntwortenRegistrieren Seite1

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de