【发布时间】:2010-04-13 18:30:51
【问题描述】:
绘制平行垂直线时,它们之间的距离固定(1.75 像素),且两条线的 x 值偏移量为非整数,根据偏移量绘制的直线会有所不同。下图中是两对非常接近的垂直线。如您所见,它们看起来非常不同。这令人沮丧,尤其是在为精灵设置动画时。
alt text http://img94.imageshack.us/img94/8606/lines2.png
任何想法如何确保具有非整数位置的精灵的图形在视觉上显示相同?
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
public class tmpa extends Sprite
{
private var _sp1:Sprite;
private var _sp2:Sprite;
private var _num:Number;
public function tmpa( ):void
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
_sp1 = new Sprite( );
drawButt( _sp1, 0 );
_sp1.x = 100;
_sp1.y = 100;
_num = 0;
_sp2 = new Sprite( );
drawButt( _sp2, _num );
_sp2.x = 100;
_sp2.y = 200;
addChild( _sp1 );
addChild( _sp2 );
addEventListener( Event.ENTER_FRAME, efCb, false, 0, true );
}
private function efCb( evt:Event ):void
{ _num += .1;
if (_num > 400)
{ _num = 0;
}
drawButt( _sp2, _num );
}
private function drawButt( sp:Sprite, offset:Number ):void
{
var px1:Number = 1 + offset;
var px2:Number = 2.75 + offset;
sp.graphics.clear( );
sp.graphics.lineStyle( 1, 0, 1, true );
sp.graphics.moveTo( px1, 1 );
sp.graphics.lineTo( px1, 100 );
sp.graphics.lineStyle( 1, 0, 1, true );
sp.graphics.moveTo( px2, 1 );
sp.graphics.lineTo( px2, 100 );
}
}
}
从认为问题与精灵的 x 位置有关的原始帖子进行编辑。
【问题讨论】:
-
请注意,以上示例行中的所有数学运算都位于全局“twip”网格上。
标签: flash actionscript-3