2011-07-27 39 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

相关问题