Flex


One major issue in styling MenuBar control in flex is removing its border.

Here’s a useful link in removing border of a flex MenuBar Control by the Flex Community:

http://blog.flexcommunity.net/?p=17

DSC_0072

 of broken url’s and unresponsive scripts.

of missing parameters to undefined fields.

i pledge this instant noodles and caffeinated drink

and promise to deliver results each week.

 

 

of relentless pursuit to build the xml

of data manipulation and complex sql,

i pledge this sanity and contending will

and promise to make full use of my skill.

 

of function overrides and classes extensions

of custom components and text validations

of absolute layouts and relative dimensions

of invoking event changes and styledeclarations

 

I pledge this endeavor on system design,

on  extending hours for debugging lines

I pledge this equipped analytical mind

and promise to create assigned modules in time.

 

I pledge this cheery attitude and enthusiastic drive

to heighten my spirit and keep up my hype.

and promise to conclude the project at hand

and fashion the product to a money for jam.

The good thing about Degrafa is its ability to utilize SVG Data either for creating Simple Geomerty:

simple-geometry

to complex ones using combinations of different svg paths and geometries, like this one:

car-complex-path1

.

A lot of resources on how to skin flex components using Degrafa are now widely available  on the web, most of them located at the samples repository of the Degrafa site. A simple way of doing so even has a screencast, which also has been my initial reference in creating skins and border-skins for containers and controls like canvas and buttons respectively.

As I progress in my work in using Degrafa for my UI, I noticed that when applying Path to surfaces, or using Paths to define the icon of a button, the path does not follow the constraints I assign to it.

For example, a graphic border skin works out just fine when i assign it to be the skin of a button:

<GraphicBorderSkin> 

<geometry>

<Path x="{ax}" y="{ay}" width="{awidth}" height="{aheight}" data="....." />

</geometry>

</GraphicBorderSkin>

Where the above code does not render properly when i assign this to be the icon of a button or any control component.

The same thing goes for this one:

<mx:Canvas>

<Surface>

<Path x="{ax}" y="{ay}" width="{awidth}" height="{aheight}" data="....." />

</Surface>

</mx:Canvas>  

I came across a relevant topic regarding assigning of a degrafa class to a control icon in a blog of Mr. Patrick Hansen, and from his example I saw that he used a translateTransform to reposition the path that defines the checkmark icon for a checkbox and a note that says:

 <!--set transform becasue paths behave differnetly in Degrafa and the transfrom helps define the position-->

And I used his code to create my own checkmarck icon. Using my own path (I uses Inkscape btw) And I saw that mine is misplaced. From there I played with translating x and y until i can finally position the path on the right location. And I move on with my primary concern: Creating Icons for Buttons.

But I have to learn how to constraint the size of my path according to the size of my button.  I tried to look at other transforms and saw ScaleTransform. However if I assign scaleX and scaleY of the transform this just scales the drawing relative to the original size of the drawing (same problem i encountered with using images as icons) which is not what i needed. 

The thing is, I know what I needed. I do not know how to implement it. And since the web is only my resource and I can only know things that I have read (so my limitation is that I haven’t read every how-to’s of degrafa and if ever i did, i am short on comprehension).

Since I have source codes of degrafa (the latest available) I track the code that draws the path and found on:
com/degrafa/geometry/Path.as 
the function: 

override public function calculateLayout 
(childBounds:Rectangle=null):void{} 


—————- 
I found this function a bit off 
since to be able to get inside this function 
a layout constraint should be defined. 

However, nowhere inside the code used the attributes i defined for my 
layoutConstraint 
except on line 560 that 
assigns the _layoutRectangle = _layoutConstraint.layoutRectangle. 
Now, this _layoutConstraint.layoutRectangle is readonly and i cannot 
assign it anywhere. 
When i try to prompt this attribute it returns a 0000 rectangle. 
so this whole function seemed to me like it had done nothing. 
— 

I tried rewriting the lines one by one by adding an if else condition 
for example 
on lines 542-544: 

if(isNaN(_layoutConstraint.width)){ 
        tempLayoutRect.width = bounds.width; 
 } 


i rewrite it to: 

if(isNaN(_layoutConstraint.width)){ 
        tempLayoutRect.width = bounds.width; 
} else { 
        tempLayoutRect.twidth = _layoutConstraint.width; 
}

 

and so forth 
and at the end i replaced line 560 to: 

_layoutRectangle = tempLayoutRect; 

and tried this on my skin file:

<Path data=".....">

<linearConstraint><LinearConstraint x="{ax}" y="{ay}" width="{awidth}" height="{aheight}" />

</linearConstraint></Path>

And I got what I needed.

The only thing now is I still have to reasign the x and y

as -x and -y respectively (I think its because the coordinate axis of inkscape is a bit different — well i really dont know)

as what Mr. Patrick did on his codes.

But I still feel the need to make this (adjustment) automated as possible since I recycle skins to use for various purposes.

—-

And also, I dont want to be changing source codes so I created a class file that extends Path and used this instead.

 

*I dont know how to upload files here. . 😛


 

 

In flex,  You could skin components programmatically using Degrafa. And I have been doing just that eversince I got a new job here in Makati – trying to skin flex components using the Declarative Graphic Framework.

 I discovered degrafa from googling on ways to skin flex components.

I got a lot of results of course and I started on using (I mean trying to use) graphical skins (the easiest since I knew CSS)

Then I learned programmatic skinning (BUT I DON’T KNOW ACTION SCRIPT!!!) So i turned back to graphical skinning. The thing is that, I keep exporting png files from Inkscape, and keep redrawing them so I tried to google ways on using SVG for skinning instead

and I got Flex”i”MMI which mentioned degrafa.. 

(Ok, enough about that)

I get started on skinning components and I had fun (still having) . So I suggested my co-worker that I’d be using this library instead of learning actionscript drawing tool. Since I understand xml and I know Inkscape.

All in all everything is quite alright until I get to skin a checkbox, which until now, I did not learn how to do. Thanks to Mr. Patrick Hansen for sharing his code and showing me how to do it..

Now I’ll try it and let’s see if it goes alright. 

I’ll have to try too if this works drawing icons on button controls.. 😀