2013-03-20 40 views
0

创建时钟系统,需要从xml访问数据。数据中的元素决定了他建筑的颜色。需要帮助将xml中的数据与界面中的对象链接并定位它们。到目前为止,我已经能够提取数据,但不知道如何链接这两个位置。我只想到此为止。要使用ActionScript中的数据使用actionscript 3来操纵电影剪辑

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; 
    } 

} 
+1

我想我们还需要多一点去做,xml是什么样的,接口是什么样的? – Neil 2013-03-20 08:42:31

+0

对不起,虽然有些遗漏。它是一个简短版本的XML,但元素只有这些。 <?XML版本= “1.0” 编码= “ISO-8859-1”?> \t \t \t \t \t 1.1.1 \t \t -146.3 \t \t 18.1 \t \t \t \t \t \t 1.1.2 \t \t -146.3 \t \t 18.1 \t \t \t \t 体2 \t \t 1.1.3 \t \t -146.3 \t \t 18.1 \t \t \t \t \t CKD \t \t 1.1.4 \t \t -146.3 \t \t 18.1 \t 2013-03-20 09:14:40

回答

0

你必须设计您的TheDot类和所有其他简单的类接受的构造性质,可能与默认值,或给他们功能的接受性,可能是散装的,因为说的着色建筑物将启动图形娱乐。举个例子:

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 
} 
+0

哇,谢谢!这对我帮助很大。 ddnt知道你可以用图形,我把图形设置为动画片段,所以我只是把它们替换成正确的?再次,非常感谢。 :) – 2013-03-20 09:24:26

+0

您可以创建一个仅包含代码的自定义类,然后扩展您所需的任何内容并对其图形执行任何操作。当然,这需要很多代码才能用moveTo()和curveTo()或lineTo()来填充图片。但是,您可以尝试在现有的MovieClip上调用'graphics.readGraphicsData()'并检查它,这样您就可以在只更改颜色或厚度的情况下重现您的手绘材质。 – Vesper 2013-03-20 09:32:09

相关问题