1. mx.graphics.BitmapFill
package {
import flash.geom.Rectangle;
import mx.graphics.BitmapFill;
import mx.skins.ProgrammaticSkin;
public class RepeatBackground extends ProgrammaticSkin {
[Embed(source="Repeater.png")]
private var embedclass:Class;
public function RepeatBackground() {
}
override protected function updateDisplayList(w:Number, h:Number):void {
super.updateDisplayList(w,h);
graphics.clear();
var b:BitmapFill = new BitmapFill();
b.source = embedclass;
b.begin(graphics,new Rectangle(0,0,w,h));
graphics.drawRect(0,0,w,h);
b.end(graphics);
}
}
}
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init()">
<mx:Style>
Application {
border-skin:ClassReference("RepeatBackground");
}
</mx:Style>
<mx:Script>
<![CDATA[
]]>
</mx:Script>
</mx:Application>
2.package mx.core.ApplicationGlobal
import flex.core.ApplicationGlobals
private var app:ApplicationGlobals.application;
3.package mx.core.ClassFactory
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="init()">
<mx:Style>
.myC{
backgroundColor:#cccccc;
}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.containers.Canvas;
import flash.display.Graphics;
import flash.geom.Rectangle;
import mx.graphics.GradientEntry;
import mx.graphics.LinearGradient;
private function init():void {
var c:ClassFactory = new ClassFactory(Canvas);
var ob:Object = {
width : 300,
height : 600,
styleName : "myC"
}
c.properties = ob;
complete(c);
}
private function complete(c:ClassFactory):void {
var canvas:Canvas = c.newInstance() as Canvas;
addChild(canvas);
}
]]>
</mx:Script>
</mx:Application>
4.package mx.core.ComponentDescriptor
编译器生成代码
/**
* Generated by mxmlc 2.0
*
* Package:
* Class: test2
* Source: D:\桌面临时\test2\src\test2.mxml
* Template: flex2/compiler/mxml/gen/ClassDef.vm
* Time: 2009.03.30 21:21:20 CST
*/
package
{
import flash.accessibility.*;
import flash.debugger.*;
import flash.display.*;
import flash.errors.*;
import flash.events.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.net.*;
import flash.printing.*;
import flash.profiler.*;
import flash.system.*;
import flash.text.*;
import flash.ui.*;
import flash.utils.*;
import flash.xml.*;
import mx.binding.*;
import mx.core.Application;
import mx.core.ClassFactory;
import mx.core.DeferredInstanceFromClass;
import mx.core.DeferredInstanceFromFunction;
import mx.core.IDeferredInstance;
import mx.core.IFactory;
import mx.core.IPropertyChangeNotifier;
import mx.core.UIComponentDescriptor;
import mx.core.mx_internal;
import mx.events.FlexEvent;
import mx.styles.*;
[Frame(extraClass="_test2_FlexInit")]
[Frame(factoryClass="_test2_mx_managers_SystemManager")]
// begin class def
public class test2
extends mx.core.Application
{
// instance variables
// type-import dummies
// Container document descriptor
private var _documentDescriptor_ : mx.core.UIComponentDescriptor =
new mx.core.UIComponentDescriptor({
type: mx.core.Application
})
// constructor (Flex display object)
/**
* @private
**/
public function test2()
{
super();
mx_internal::_document = this;
// our style settings
// ambient styles
mx_internal::_test2_StylesInit();
// properties
// events
this.addEventListener("initialize", ___test2_Application1_initialize);
}
// initialize()
/**
* @private
**/
override public function initialize():void
{
mx_internal::setDocumentDescriptor(_documentDescriptor_);
super.initialize();
}
// scripts
// <Script>, line 10 - 34
import mx.containers.Canvas;
import flash.display.Graphics;
import flash.geom.Rectangle;
import mx.graphics.GradientEntry;
import mx.graphics.LinearGradient;
private function init():void {
var c:ClassFactory = new ClassFactory(Canvas);
var ob:Object = {
width : 300,
height : 600,
styleName : "myC"
}
c.properties = ob;
complete(c);
}
private function complete(c:ClassFactory):void {
var canvas:Canvas = c.newInstance() as Canvas;
addChild(canvas);
}
// end scripts
// supporting function definitions for properties, events, styles, effects
/**
* @private
**/
public function ___test2_Application1_initialize(event:mx.events.FlexEvent):void
{
init()
}
// initialize style defs for test2
mx_internal static var _test2_StylesInit_done:Boolean = false;
mx_internal function _test2_StylesInit():void
{
// only add our style defs to the StyleManager once
if (mx_internal::_test2_StylesInit_done)
return;
else
mx_internal::_test2_StylesInit_done = true;
var style:CSSStyleDeclaration;
var effects:Array;
// myC
style = StyleManager.getStyleDeclaration(".myC");
if (!style)
{
style = new CSSStyleDeclaration();
StyleManager.setStyleDeclaration(".myC", style, false);
}
if (style.factory == null)
{
style.factory = function():void
{
this.backgroundColor = 0xcccccc;
};
}
StyleManager.mx_internal::initProtoChainRoots();
}
// embed carrier vars
// end embed carrier vars
// end class def
}
// end package def
}
5.package mx.skins.ProgrammaticSkin \
protected function rotatedGradientMatrix(x:Number, y:Number,
width:Number,
height:Number,
rotation:Number):Matrix
protected function drawRoundRect(
x:Number, y:Number, width:Number, height:Number,
cornerRadius:Object = null,
color:Object = null,
alpha:Object = null,
gradientMatrix:Matrix = null,
gradientType:String = "linear",
gradientRatios:Array /* of Number */ = null,
hole:Object = null):void
6.package mx.manager.SystemManagerGlobals
public static var topLevelSystemManagers:Array = [];
public static var bootstrapLoaderInfoURL:String
7. mx.utils.LoaderUtil
public static function normalizeURL(loaderInfo:LoaderInfo):String