Showing posts with label attribute. Show all posts
Showing posts with label attribute. Show all posts

Monday, October 3, 2011

HTML tags in textfield

If you want to format text in field using old html tag here is simple list of possible tags:


  • <a> hyperlink. Has two parameters:
    • target - target window
    • href - url  (or event!)
  • <b> - text betwen those tags will be bold
  • <br> - breaks line
  • <font> - describes font:
    • color - color of the text. Must be in hex (with # at the begining)
    • face - font name
    • size - font size
  • <img>  allows to embed image (or swf) like in html site. Here is a list of supported properties:
    • src - source of media
    • width - width of rectangle where media is placed (always in px)
    • height - height of rectangle where media is placed (always in px)
    • align - horizontal alignment. Left or right. Specifies on which side text will flow around the image
    • hspace - horizontal margin around media. By default it is 8px
    • vspace - vertical margin around media. By default it is 8px
    • id - identifier for embedded media. Used to controll it
    • checkPolicyFile - connected to the security policy. Used with flash swf file embedded
  • <i> - text between those tags will be italic. 
  • <li>, <ul>, <ol> - lists. ordered and dotted
  • <p> - paragraph. Supports only two attributes:
    • align - specifies if text block is aligned to left/right/center or justify
    • class - connects with CSS class
  • <span> - inline part of text that allows only one attribute:
    • class - classname from CSS
  • <u> - text between those tags will be underlined

Saturday, August 6, 2011

Letter Spacing - TextFormat or css StyleSheet

If you;re looking for example of setting letter spacing - here it is.

The first solution is TextFormat. The property is named same in both options - letterSpacing. Let's see the code:

var txtfmodified:TextField = new TextField();
addChild(txtfmodified);
txtfmodified.y =20;
txtfmodified.text = 'hello world';
var tf:TextFormat = txtfmodified.getTextFormat();
tf.letterSpacing = 3; /* I tried lots of different values here. */
txtfmodified.setTextFormat(tf);

We can also use stylesheet to adjust part of text (in previous solution you can also adjust part of text but selecting chars is more complicated than using styles for classes of html tags). Here is the example:

var txtfmodified2:TextField = new TextField();
addChild(txtfmodified2);
txtfmodified2.y =40;
txtfmodified2.text = 'hello world';
var s:StyleSheet = new StyleSheet();
s.setStyle("p", {letterSpacing:3});
txtfmodified2.styleSheet = s;
txtfmodified2.htmlText = "<p>hello world</p>";

Remember that there are two solutions but you cannot mix them. Either way you'll receive error like this:
Error: Error #2009: This method cannot be used on a text field with a style sheet


And a proof at the end. First line is simple not modified field. Second line is modified by TextFormat properties. Third line is adjusted by stylesheet.




Thursday, March 10, 2011

Associative array

There no such thing like associative array in ActionScript. It would be too easy. In the other hand every object in AS3 is an associative collection of values. Here is example of how it works:

var assocArray:Object = new Object();

And that is all for creating. to set value we call setter

assocArray.price = 10000;

or more like aray

assocArray['price'] = 10000;

Reading looks similar:

assocArray.price

or

assocArray['price']

More complicated situation is with displaying full array. Trying to trace instance will cause something like this:

[object Object]

Also checking the size or length by variable of method doeas not help because returns zero. The easiest option is to create a for-each loop that displays all variables:

for (var item in assocArray)
{
    trace(item,' : ',assocArray[item]);
}

For counting elements the fastest solution is creating a loop that increments value for each item. But it's not good solution for big structures. In this situation good solution will be own class that controls records with push() and pop() methods.

Thursday, February 3, 2011

Numerical attributes in XML & no value in code

I know it's a stupid case, but sometimes I forgot about simple things.

Problem:
we have numerical value in XML like:

<component itemHeight="20" itemsVSpace="10" .../>

in code we want to use those values

itemLabel.y = index*( _contentXML.@itemHeight + _contentXML.@itemsVSpace);

Result? We receive zero. Because attribute value is used as String and + works as concatenation. Then multiple converts value to zero. We have to cast values at the begining to expected type:

itemLabel.y = index*( int(_contentXML.@itemHeight) + int(_contentXML.@itemsVSpace) );