0

クロック システムを作成するには、xml からデータにアクセスする必要があります。データ内の要素によって建物の色が決まります。xml 内のデータをインターフェイス内のオブジェクトにリンクし、それらを配置するのに助けが必要です。これまでのところ、データを抽出することはできましたが、これら 2 つをリンクして配置する方法がわかりません。私はここまでしか来ていません。

import com.greensock.loading.*;
import com.greensock.loading.display.*;
import com.greensock.events.LoaderEvent;
import flash.events.Event; 
import flash.net.URLLoader; 


var xmlLoader:URLLoader=new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, loadXML);

var xmlData:XMLList=new XMLList();
xmlLoader.load(new URLRequest("xmldata.xml"));

function loadXML(e:Event):void
{
    var i:int;
    xmlData = new XMLList(e.target.data);
    var theDots = xmlData.dots;
    var posx = xmlData.dots.posx;
    var posy = xmlData.dots.posy;
    for ( i=0; i<theDots.length(); i++ )
    {
        var dot_name = theDots[i].name;
        var pos_x = theDots[i].posx;
        var pos_y = theDots[i].posy;

        var mc:MovieClip = new theDot;
        var pos_x:Point X = new x;
        var pos_y:Point Y = new y;  
    }

}
4

1 に答える 1

0

You have to design your TheDot class and all the other simple classes to accept properties in the constructor, probably with default values, or give them function(s) to accept properties, probably in bulk, as say coloring a building will initiate a graphics recreation. An example:

public class TheHouse extends Sprite {
    private var fillColor:uint; // with alpha
    private var lineColor:uint;
    private var lineThickness:Number;
    private function drawHouse():void {
        // drawing house
        this.graphics.clear();
        this.graphics.lineStyle(lineThickness,(lineColor & 0xffffff),
            Number(lineColor>>>24)/255); // alpha is 0..1
        this.graphics.beginFill((fillColor&0xffffff),
            Number(fillColor>>>24)/255);
        this.graphics.circle(0,0,20); // *le perfectly drawn house code
        // actually here go graphics commands to draw a house via lines/curves
        this.graphics.endFill();
    }
    public function TheHouse() {
        lineColor=0xff000000;
        fillColor=0xffffffff;
        lineThickness=1.0;
        drawHouse();
    }
    public function set outlineColor(value:uint):void {
        if (lineColor==value) return;
        lineColor=value;
        drawHouse();
    } 
    // similarly do other setters
}
于 2013-03-20T08:55:33.000 に答える