Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript/flash lineTo行为_Flash_Actionscript_Drawing_Behavior - Fatal编程技术网

Actionscript/flash lineTo行为

Actionscript/flash lineTo行为,flash,actionscript,drawing,behavior,Flash,Actionscript,Drawing,Behavior,最近,我在创建自定义flex组件时遇到了一个问题,它直接影响到行为 假设我使用宽度为200200的drawRect绘制一个矩形。这意味着它的坐标范围是0,0到199199。然后在这个矩形内画一条线,从0,10到200,10。它从0,10到199,10正确绘制,即线的右端与矩形的右边缘对齐;没有过冲/欠冲。下面是代码 var g:Graphics = graphics; g.clear(); g.beginFill(0x0000ff, 1); g.drawRect(0, 0, unscaledWi

最近,我在创建自定义flex组件时遇到了一个问题,它直接影响到行为

假设我使用宽度为200200的drawRect绘制一个矩形。这意味着它的坐标范围是0,0到199199。然后在这个矩形内画一条线,从0,10到200,10。它从0,10到199,10正确绘制,即线的右端与矩形的右边缘对齐;没有过冲/欠冲。下面是代码

var g:Graphics = graphics;
g.clear();
g.beginFill(0x0000ff, 1);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();

g.lineStyle(0, 0xff0000, 1);
g.moveTo(0, 10);
g.lineTo(200, 10);
这是否意味着lineTo不包括最后一点(199,10)?我用getBounds/getRect尝试了这一点(只使用一条没有矩形的水平线,它还将其打印为(x:0,y:10,w:200,h:0),即宽度为200(从0到199)

然而,如果我从右到左,从(199,10)到(-1,10)画这条线。在这条线的右端和矩形的右边缘之间有一个间隙。而且这条线超出了左侧的矩形一个单位

var g:Graphics = graphics;
g.clear();
g.beginFill(0x0000ff, 1);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();

g.lineStyle(0, 0xff0000, 1);
g.moveTo(199, 10);
g.lineTo(-1, 10);
这似乎是从右到左的线对线行为与从左到右的线对线行为不同;我怀疑这是真的,我想我遗漏了什么。有人知道我遗漏了什么吗

编辑:用户2139426的后续回答 这意味着如果我画一条从(0,0)到(200,0)的线,它将从(0,0)的左上角(包括整个像素宽度)到(200,0)的左上角(仅包括像素(199,0)和(200,0)中的一小部分。这是正确的吗

左上角的哪个部分实际上包括在内?是否可能知道这一点


这似乎是一个非常重要的细节。我通读了Adobe文档、Essential Actionscript、以及《圣经》等,它们总是像解释整个像素一样进行解释。你知道有没有任何资源(文档/书籍)能够真正清楚地解释这类内容?或者只是一般的图形编程(我对这方面不熟悉).

你在用像素思考

试着用向量来思考。你在屏幕上看到的一条线并不完全在那个像素上,而是在那个像素的左上角

宽度从0到200的线条为200 点0位于像素-1和像素0之间,点200位于像素199和像素200之间

从-1到199宽度的线是200 点-1位于像素-2和像素-1之间,点199位于像素198和像素199之间


lineTo的行为很好。

这也许可以解释它!只是上面附加的一个快速跟进问题。感谢您的回答。最好从阅读参考指南(链接)中使用的方法说明开始,通常你会发现有一些例子,有时还有详细的图形解释它们。在这个链接中,查找LineStyle实际上我阅读了大部分(如果不是全部的话)文档和例子。我找不到任何地方可以说这些线实际上是在开始像素和结束像素的左上角之间绘制的。它们只是从一个点开始t(a,b)到(c,d)表示,例如,它简单地说是从(100100)到(200200)。类似地,它们只是让你控制厚度等。与一些流行的AS3书籍的图形编程章节相同。
var g:Graphics = graphics;
g.clear();
g.beginFill(0x0000ff, 1);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();

g.lineStyle(0, 0xff0000, 1);
g.moveTo(199, 10);
g.lineTo(-1, 10);