2011-07-27 43 views
0

我創建了一個3d牆,並傳遞圖像並通過xml進行鏈接。現在我添加了描述,但它只是顯示在中間。我不知道如何對齊它。在鼠標懸停時,該照片的描述應該顯示在那裏,但不顯示在中間(對於所有照片)。ActionScript 3中的動態文本字段屬性設置

這裏是我的完整代碼:

var name1:TextField = new TextField(); 
addChild(name1); 

var xmlReq:URLRequest = new URLRequest("XML/ImagesData01.xml"); // rename to your file!!! 
var xmlLoader:URLLoader = new URLLoader(); 

function imagerollover(e:MouseEvent):void 
{ 
//var mXML:XML; 
name1.text = myXML.data[Number(e.currentTarget.name)][email protected]; 

//var imagesprite:Sprite = e.target as Sprite; 
//if(showimage == true) { 

} 

我怎樣才能做到這一點?

我重視的形象,突出了橢圓形,文字顯示有本身,但我想只要我把鼠標放在

`stop(); 

import fl.transitions.Tween; 
import fl.transitions.easing.*; 
import flash.display.Sprite; 
import flash.events.MouseEvent; 
import flash.display.*; 
import flash.events.Event; 
import flash.display.Shape; 
import flash.display.MovieClip; 
import flash.display.Bitmap; 
import flash.display.BitmapData; 
import flash.display.DisplayObject; 
import flash.display.Loader; 
import flash.events.Event; 
import flash.geom.Point; 
import flash.net.URLRequest; 
import flash.net.URLLoader; 
import flash.geom.ColorTransform; 
import flash.net.navigateToURL; 

import org.papervision3d.scenes.*; 
import org.papervision3d.cameras.*; 
import org.papervision3d.objects.*; 
import org.papervision3d.materials.*; 
import org.papervision3d.materials.BitmapMaterial; 
import flash.text.TextField; 


var container:Sprite = new Sprite(); 
container.x = 0; 
container.y = 0; 
addChild(container); 

var scene:Scene3D = new MovieScene3D(container); 
var cam:Camera3D = new Camera3D(); 
var new_zoom:Number; 
cam.zoom = 6; 

var planedictionary:Dictionary = new Dictionary(); 
var imageplane:Plane = new Plane(); 
imageplane.visible = false; 
cam.target = imageplane; 

var maxRows:Number = 1; 
var yaxis:Number = 0; 
var anglenumber:Number = 100; 

var image = new Array(); 
var urllink = new Array(); 
var urltarget:Array = new Array(); 
var planes = new Array(); 

var i:Number; 
var max:Number; 
var li:Number = 0; 
var center:Number = 6.4; 
var zoom:Number = 10; 
var cameramove:Boolean = true; 
var camerapositionX:Number; 
var camerapositionY:Number; 
var showimage:Boolean = true; 
var imageholder; 
var xposition:Number; 
var yposition:Number; 
var zoomdistance:Number = 12; 
var name1:TextField = new TextField(); 
addChild(name1); 
name1.x = 100; 
name1.y = 20; 
name1.textColor = 0xffffff; 




var XML_Load:XML = new XML(); 
var loader:URLLoader = new URLLoader(); 
loader.load(new URLRequest("XML/ImagesData01.xml")); 
loader.addEventListener(Event.COMPLETE, imagecontainer); 

function imagecontainer(e:Event):void { 
    XML_Load = XML(e.target.data); 
    max = XML_Load.data.length(); 
    var displayimage:Number = Math.ceil(max/1); 
    var anglenumberMath:Number = ((Math.PI*2) * maxRows)/max; 

    for(i = 0; i < max; i++) { 
     image.push(XML_Load.data[i][email protected]()); 
     urllink.push(XML_Load.data[i][email protected]()); 
     urltarget.push(XML_Load.data[i][email protected]()); 

     var bfm:BitmapFileMaterial = new BitmapFileMaterial("IMAGES/" + XML_Load.data[i][email protected]()); 
     bfm.oneSide = true; 
     bfm.smooth = true; 

     var plane:Plane = new Plane(bfm, 130, 105, 1, 1); 
     scene.addChild(plane); 
     planes.push(plane); 



     var planeMC:Sprite = plane.container; 
     planeMC.name = "" + i; 
     planedictionary[planeMC] = plane; 

     planeMC.buttonMode = true; 
     planeMC.addEventListener(MouseEvent.ROLL_OVER, imagerollover); 
     planeMC.addEventListener(MouseEvent.ROLL_OUT, imagerollout); 
     planeMC.addEventListener(MouseEvent.CLICK, imagepress); 

     camerapositionX = ((150 * displayimage) - 150) * 0.5; 
     camerapositionY = ((115 * maxRows) - 115) * 0.5; 

     plane.x = li * 150 - camerapositionX; 
     li++; 
     plane.y = yaxis - camerapositionY; 

     if((i+1) % displayimage == 0) { 
      li = 0; 
      yaxis += 115; 
     } 
    } 
}; 


var xmlReq:URLRequest = new URLRequest("XML/ImagesData01.xml"); // rename to your file!!! 
var xmlLoader:URLLoader = new URLLoader(); 
//var myXML:XML; 





//----------------- 


//xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); // event listener b4 load!!! 
//xmlLoader.load(xmlReq); 

//var myXML:XML; 
//var mySprite:Sprite; 
//var headLoader:Loader; 


//function imagerollover(e:MouseEvent):void 
//{ 
//navigateToURL(new URLRequest(String(myXML.data[Number(e.currentTarget.name)][email protected]))); 

//} 


//function xmlLoaded(e:Event):void{ 
//myXML = new XML(e.target.data); 
//for (var i:int = 0; i < myXML.children().length(); i++) 
//{ 
//headLoader = new Loader(); 
//mySprite = new Sprite(); 
//headLoader.load(new URLRequest(String(myXML.data[i][email protected]))); 
//mySprite.addChild(headLoader); 
//mySprite.name = String(i); 
//mySprite.addEventListener(MouseEvent.ROLL_OVER, imagerollover) 
//addChild(mySprite); 
//} 

//} 


//------------------- 


function imagerollover(e:MouseEvent):void 
{ 
    //var mXML:XML; 
    name1.text = myXML.data[Number(e.currentTarget.name)][email protected]; 

    //var imagesprite:Sprite = e.target as Sprite; 
    //if(showimage == true) { 

    } 
    //}; 

function imagerollout(e:MouseEvent) { 
    var imagesprite:Sprite = e.target as Sprite; 
    if(showimage == true) { 

    } 
}; 








xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); // event listener b4 load!!! 
xmlLoader.load(xmlReq); 

var myXML:XML; 
var mySprite:Sprite; 
var headLoader:Loader; 


function imagepress(e:MouseEvent):void 
{ 
navigateToURL(new URLRequest(String(myXML.data[Number(e.currentTarget.name)][email protected])),"_self"); 

} 


function xmlLoaded(e:Event):void{ 
myXML = new XML(e.target.data); 
for (var i:int = 0; i < myXML.children().length(); i++) 
{ 
headLoader = new Loader(); 
mySprite = new Sprite(); 
headLoader.load(new URLRequest(String(myXML.data[i][email protected]))); 
mySprite.addChild(headLoader); 
mySprite.name = String(i); 
mySprite.addEventListener(MouseEvent.CLICK, imagepress) 
addChild(mySprite); 
} 


} 



stage.addEventListener(MouseEvent.MOUSE_WHEEL, CameraZoom); 

function CameraZoom(e:MouseEvent) { 
    var newzoom:Number = zoomdistance + e.delta/5; 

    if(newzoom < 3) { 
     newzoom = 3 
    } 

    if(newzoom > 18) { 
     newzoom = 18 
    } 

    zoomdistance = newzoom; 
}; 

addEventListener(Event.ENTER_FRAME, render); 

function render(e:Event):void { 
    cam.zoom += (zoomdistance - cam.zoom)/5; 

    if(cameramove == true) { 
     cam.x += (((stage.mouseX-(stage.stageWidth * 0.5))*2)-cam.x) * 0.05; 
     cam.y += (((stage.mouseY-(stage.stageHeight * 0.5))*2)-cam.y) * 0.05; 
    } 

    scene.renderCamera(cam); 
};` 
+3

的圖像會嘗試與你的話畫是不是真的來了跨越清楚,也許您的Flash應用程序的截圖能更好地說明您的問題。 – Taurayi

+0

name1.autoSize = TextFieldAutoSize.CENTER; ?也可以使用圖像寬度和文本字段的textWidth之差的一半來相應地偏移文本字段。 –

+0

試試這個:保持標籤的寬度與圖像的寬度相同,並將textAlign設置爲「中心」。 – midhunhk

回答

0

至於我可以告訴它要顯示的每個圖像上,你的問題基本上是「我如何重新定位TextField?」。所以沒有更多的細節,我會回答。

TextField對象有一個x和一個y屬性,它可以改變它的位置。只需將它們設置爲您想要的值即可。

name1.x = 100; 
name1.y = 20; 
+0

其實,如果我給這樣的它會在相同的位置,但是當我把鼠標放在image1上時,文本應該放在它上面,image2,文本應該放在圖像2上... – priya

0

設置imagerollover函數中的x和y位置。

可能會有效。

name1.x = e.currentTarget.x; 
name1.y = e.currentTarget.y; 
+0

我已經使用過這個,但是仍然一樣:( – priya

+0

使用e.target代替e.currentTarget。 – Benny

+0

' VAR NAME1:文本字段=新的TextField(); 的addChild(NAME1); 函數imagerollover(E:MouseEvent)方法:無效 { \t \t \t name1.text = myXML.data [號碼(e.currentTarget.name) ]。@描述; \t \t name1.x = e.target.x; name1.y = e.target。Ÿ; \t \t \t \t} ' 這是我如何做。仍然沒有改變相同的東西,,, :(:() – priya

相關問題