as基础问题:对象位置

xiewneqi 2010-10-15 11:18:21
今天看as语言参考手册时,写了一个小文件,非常简单的,代码如下:
package {
import flash.display.Sprite;
import flash.text.TextField;

public class ASTest extends Sprite
{
public function ASTest()
{
var bigText:TextField = new TextField();
bigText.border = true;
bigText.text = "hello world";
bigText.width = 1000;
bigText.height = 1000;
bigText.x = 0;
bigText.y = 0;
addChild(bigText);
}
}
}

代码中bigText的x和y都是0,那么我想文本框应该是和浏览器左上角对齐的,可是运行结果却成了这样:

bigText的x坐标并不是0?左边那块间隔是怎么来的?
...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiewneqi 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xuetao121 的回复:]

HTML code

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:sx="*">
<mx:Script>
<![CDATA[
import ……
[/Quote]
我提问的是 纯AS项目,老兄写给我的,是Flex项目,不要说其实Flex底层就是AS,你自己试一下就明白我的问题了
xuetao121 2010-10-20
  • 打赏
  • 举报
回复

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:sx="*">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;

private function onClickHandle():void{
var uicom:UIComponent=new UIComponent();
var asTest:ASTest = new ASTest();
uicom.addChild(asTest);
addChild(uicom);
}
]]>
</mx:Script>
<mx:HBox>
<mx:Spacer width="400"/>
<mx:Button id="sss" label="测试ASTest类的现实情况" click="onClickHandle()"/>
</mx:HBox>
</mx:Application>


你自己看看效果吧,没你说的什么现象
leemiki 2010-10-18
  • 打赏
  • 举报
回复
。。。。。

Flex是基于html来显示的!

如果是Flex的stage坐标,那这个坐标的差异会不会是html嵌入swf时出现的呢!

只是一种猜想,楼主可以看一下~~~
xiewneqi 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 leemiki 的回复:]

你也没写明ASTest是否嵌入在其他容器中,我怎么知道ASTest就是stage
[/Quote]
忘了告诉老兄这是个纯AS项目,ASTest就是程序主类,它的父容器是stage
leemiki 2010-10-17
  • 打赏
  • 举报
回复
你可以在显示区域加个click点击测试下

mouseEvent.stageX mouseEvent.stageY

mouseEvent.localX mouseEvent.localY

看看是什么不就知道
leemiki 2010-10-17
  • 打赏
  • 举报
回复
坐标如果是stageX和stageY通常不会出现以上显示情况

应该就是loaclX,localY
leemiki 2010-10-17
  • 打赏
  • 举报
回复
你也没写明ASTest是否嵌入在其他容器中,我怎么知道ASTest就是stage
xiewneqi 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 leemiki 的回复:]

这里设置的坐标是相对于ASTest父容器的坐标并不是整个Stage的坐标(全局坐标)

打快了,^_^
[/Quote]
以下摘自FLEX Help——
“Each SWF file has an associated ActionScript class, known as the main class of the SWF file. When Flash Player opens a SWF file in an HTML page, Flash Player calls the constructor function for that class and the instance that is created (which is always a type of display object) is added as a child of the Stage object.”
ASTest的父容器不就是stage?
leemiki 2010-10-15
  • 打赏
  • 举报
回复
这里设置的坐标是相对于ASTest父容器的坐标并不是整个Stage的坐标(全局坐标)

打快了,^_^
leemiki 2010-10-15
  • 打赏
  • 举报
回复
bigText.x = 0;
bigText.y = 0;

这里设置的坐标是相对于ASTest的坐标并不是整个Stage的坐标(全局坐标)

如下所述:
var point:Point = new Point();
point.x = 0;
point.y = 0;
point = astest.localToGlobal(point);//astest为ASTest对象
astest = point.x;
astest = point.y;
这是astest才是绝对(0,0)
xiewneqi 2010-10-15
  • 打赏
  • 举报
回复
大家帮帮忙 :)

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧