`
Blackbaby
  • 浏览: 180583 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
阅读更多

 1.  读取从swf传进来的参数

var first_name : String = FlexGlobals.topLevelApplication.parameters.firstname;

 

2.  FXG使用fill对图形本体进行上色,使用stroke对图形边框进行上色,而fill(填充)和stroke(画笔)有三种上色方法:
     fill — SolidColor(色块),RadialGradient(径向渐变),LinearGradient(线性渐变)。
     stroke — SolidColorStroke(实线),RadialGradientStroke(径向渐变),LinearGradientStroke(线性渐变)。

 

 3.  leverage remove events to enable component clean-up when  a component is removed,two events are dispatch:the parent dispatches  ElementExistance.ELEMENT_REMOVED and the component dispatches FlexEvent.REMOVED

 

4. //关掉滚动控件的垂直和水平滚动条(list控件)
     list.scroller.setStyle('horizontalScrollPolicy', 'off');
     list.scroller.setStyle('verticalScrollPolicy', 'off');
     //设置滚动控件的垂直滚动条的滚动样式
     list.scroller.verticalScrollBar.setStyle('smoothScrolling', true);//设置为平滑滚动
     list.scroller.verticalScrollBar.setStyle('repeatInterval', 500);//设置滚动到指定点的经过的时间

 5. 对象的深度克隆

public static function clone(object:Object):Object{
        var qClassName:String = getQualifiedClassName(object);
        var objectType:Class = getDefinitionByName(qClassName) as Class;
        registerClassAlias(qClassName, objectType);//恢复本来面目
     var copier : ByteArray = new ByteArray();
        copier.writeObject(object);
        copier.position = 0;
        return copier.readObject();
}

 6.replaceAll 方法

private function replaceAll( source:String, find:String, replacement:String ):String{
    return source.split( find ).join( replacement );     
} 

 7.layout   http://insideria.com/2009/05/flex-4-custom-layouts.html

 

package 
{
   import mx.core.ILayoutElement;
   
   import spark.layouts.supportClasses.LayoutBase;
   
   public class CircularLayout extends LayoutBase
   {
      override public function updateDisplayList(w:Number, h:Number):void
      {
           super.updateDisplayList(w, h);
             
           if (!target)
             return;
                 
           var layoutElement:ILayoutElement;
           var count:uint = target.numElements;
             
           var angle : Number = 360/count;
           var radius : Number = Math.min( target.width/2, target.height/2 ) - 25;
             
           var w2 : Number = target.width/2;
           var h2 : Number = target.height/2;
             
           for (var i:int = 0; i < count; i++)
           {
              layoutElement = target.getElementAt(i);
                    
              if (!layoutElement || !layoutElement.includeInLayout)
                continue;
            
              var radAngle : Number = (angle * i) * (Math.PI / 180) ;
            
              var _x : Number = Math.sin( radAngle );
              var _y : Number = - Math.cos( radAngle );
            
              layoutElement.setLayoutBoundsPosition( w2 + (_x * radius) - 25, h2 + (_y * radius) - 10 );
            } 
       }
    }
}

  8. save as a image

 

//AS部分代码
var bitmapData:BitmapData = new BitmapData(pic.width, pic.height);
 bitmapData.draw(pic,new Matrix());
var bitmap : Bitmap = new Bitmap(bitmapData);
var jpg:JPEGEncoder = new JPEGEncoder();
var ba:ByteArray = jpg.encode(bitmapData);
file.save(ba,"a.jpg");

//MXML部分代码
<mx:Canvas id="pic">
        <mx:Image source="@Embed(&apos;hello.jpg&apos;)"/>
        <mx:Label y="43" fontSize="48" id="myMessageLbl"  horizontalCenter="0" width="100%" textAlign="center"/>    
</mx:Canvas>

 

 9. 把visable和includeInLayout组合起来使用,这样可以让组件显示的时候就占位,不显示的时候就把位置让给人家。

 

  10. java端的java.math.BigDecimal via AMF 3 pass to actionscript 将被序列化成string

 

  11.DataGrid列排序不确定的情况下,可以这么做(闭包):

 

private static function sortFunc(field:String):Function{       
       return function(obj1:Object, obj2:Object):int{
               return ObjectUtil.numericCompare(obj1[field],obj2[field]);
       }
}

 

 12.播放一组动画

 

<s:transitions>
	<s:Transition fromState="closed" toState="open">
		<s:Sequence>
			<s:Resize target="{this}" duration="150" />
			<s:AddAction target="{contentGroup}" />
			<s:Fade target="{contentGroup}" alphaFrom="0" alphaTo="1" duration="150"/>
		</s:Sequence>
	</s:Transition>
	<s:Transition fromState="open" toState="closed">
		<s:Sequence>
			<s:Fade target="{contentGroup}" alphaFrom="1" alphaTo="0" duration="150" />
			<s:RemoveAction target="{contentGroup}" />
			<s:Resize target="{this}" duration="150" />
		</s:Sequence>
	</s:Transition>
</s:transitions>

 

  13.event.target是事件的派发者,event.currentTarget是事件的监听者

 

  14.动态生成DataGrid组件的表头。

  

private function setCols():void {
	var cols:Array = dg.columns;
	for(var i:uint=0;i<dbField.length;i++){
		var dgCol:DataGridColumn = new DataGridColumn();
		dg.width+=50
		dgCol.dataField = dbField[i];
		dgCol.headerText =dbField[i];
		cols.push(dgCol);
	}
	dg.columns = cols;
}

 

    15.默认情况DataGrid组件的DataGridColumn的dataField属性不支持形如a.b.c的嵌套数据,但是可以给DataGridColumn指定labelFunction来达到目的。

  

private function neast_labelFunc(row:Object, col:DataGridColumn):String {
	var fields:Array;
	var label:String;
	var dataFieldSplit:String = col.dataField;
	var currentData:Object = row;
	if(dataFieldSplit.indexOf(".") != -1){ 
		fields = dataFieldSplit.split(".");
		for each(var f:String in fields)
		currentData = currentData[f];
		if(currentData is String)
			return String(currentData);
	}else{
		if(dataFieldSplit != "")
			currentData = currentData[dataFieldSplit];
	}
	try{
		label = currentData.toString();
	}catch(e:Error){
		label = super.itemToLabel(row);
	}
	return label;
}

      16.当我们侦听itemClick事件的时候,将会接收到一个ListEvent事件对象,对象里分别有所点击单元格的列索引与列索  引,  我们就从这两个数据进行其它数据的获取... (ps:下边提到的e为ListEvent事件对象..)
     1.所点击的列的表头
     (e.target as DataGrid).columns[e.columnIndex].headerText
     2.点击的列索引
     e.columnIndex
     3.点击的行索引
     e.rowIndex
     4.点击的整行的数据(选中的数据)
     (e.target as DataGrid).selectedItem
     5.选中的单元格的数据
     (e.target as DataGrid).selectedItem[(e.target as DataGrid).columns[e.columnIndex].dataField]

 

     17.ActionScript调用JavaScript函数

    

ExternalInterface.call("parent.页面js函数名","参数");

 

     18.从itemrender发送事件给list

   

     owner.dispatchEvent(事件对象);

 

       19.Flash 应用的右键菜单

   

private function initContextMenu():void{
	const copyMenu:ContextMenuItem = new ContextMenuItem("Copy Text", true);
	copyMenu.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, copyText);
	contextMenu = new flash.ui.ContextMenu();
	contextMenu.hideBuiltInItems();
	contextMenu.customItems = [copyMenu];
}
		
private function copyText(event:ContextMenuEvent):void{
	Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, text);
}

 

       20 . Flex中label换行

   

在as中赋值 label.text="aaaaa \r\n bbbbbbb"
在mxml中赋值 text="aaaaaa &#13; bbbbbbb"

       

       21. parsley 日志能功

   

<fx:Declarations> 
      <!-- Place non-visual elements (e.g., services, value objects) here --> 
      <s:TraceTarget 
            includeCategory="true" 
            includeLevel="true" 
            includeTime="true" 
            level="{LogEventLevel.DEBUG}" 
            > 
            <s:filters> 
               <fx:String>org.spicefactory.parsley.*</fx:String> 
            </s:filters> 
         </s:TraceTarget> 
       
      <sf:ContextBuilder config="{ConfigFile}"></sf:ContextBuilder> 
</fx:Declarations>

 

    22.  Flex4:ViewStack与浏览器历史记录(HistoryManager和BrowserManager(flex4推荐))

   

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                           xmlns:s="library://ns.adobe.com/flex/spark"
                           xmlns:mx="library://ns.adobe.com/flex/mx" >
        <fx:Script>
                <![CDATA[
                        public var historyManagementEnabled : Boolean = true;//flex4要加上这句
                ]]>
        </fx:Script>
        <s:layout>
                <s:VerticalLayout horizontalAlign="center"/>
        </s:layout>
        <s:TabBar dataProvider="{stack}"/>
        <mx:ViewStack historyManagementEnabled="true" id="stack" height="100%" width="100%">
                <s:NavigatorContent label="First page">
                        <s:HGroup horizontalAlign="center" verticalAlign="middle" height="100%" width="100%">
                                <s:Label text="This is the first page" verticalAlign="middle"/>
                        </s:HGroup>
                </s:NavigatorContent>
                <s:NavigatorContent label="Second page">
                        <s:HGroup horizontalAlign="center" verticalAlign="middle" height="100%" width="100%">
                                <s:Label text="This is the second page"/>
                        </s:HGroup>
                </s:NavigatorContent>
        </mx:ViewStack>
</s:Application>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics