2013-04-05 56 views
0

我希望这之前没有问过太多。当我搜索时,我只能得到有关重新缩放窗口大小的问题。作为mc之间距离的函数调整大小

现在我的问题。我有一艘太空飞船向另一艘船发射光束。我希望光束显示一段时间,我希望它能够“桥接”两艘船。换句话说,我希望梁在两艘船之间扩展其宽度。

我尝试使用1像素宽和高(并对齐左边缘)的点影片剪辑进行此操作。我尝试用下面的代码来调整其大小:(目标船发生火灾,在和业主是船射击)

dist.vx = target.x - owner.x; 
dist.vy = target.y - owner.y; 
dist.dist = Math.sqrt(dist.vx*dist.vx + dist.vy*dist.vy); 

width = dist.dist; 

x = owner.x; 
y = owner.y; 
rotation = Math.atan2(target.y-y, target.x-x)*180/Math.PI; 

按预期这不起作用,因为1)点也得到在很多大其他维度 - 我怎样才能“关闭”这种行为? 2)有时它似乎会变宽 - 但只能在一定的角度...

任何建议要么解决高/宽度缩放或以另一种方式来实现相同的效果?

(我是新来的编码和闪光灯。)谢谢!

回答

0

通过调整一个点,你将有一个长方形......

您可以动态创建一个覆盖船舶和的moveTo一艘船的命中点,则了lineTo其他船精灵...你根本不需要距离计算。你所要做的就是小心地放置精灵。这样你就可以用简单的数学来计算相对的点数。

假设你有MC 空间 contining MC SHIP1和MC SHIP2,并击中点COORDS船舶被命名为HXHY,你会使用精灵小号,计算应为如下。

// calculate hit points relative to mc space 
var s1HX:int = ship1.x + ship1.hx, 
    s1HY:int = ship1.y + ship1.hy, 
    s2HX:int = ship2.x + ship2.hx, 
    s2HY:int = ship2.y + ship2.hy, 
// sprite relative moveTo lineTo coords will be these. 
    mX: int, mY: int, 
    lX: int, lY: int; 

// top left of sprite will be minimum of the hit coords. 
s.x = (s1HX <= s2HX)? s1HX : s2HX; 
s.y = (s1HY <= s2HY)? s1HY : s2HY; 

// now we can get sprite relative moveTo lineTo coordinates: 
mX = s1HX - s.x; 
mY = s1HY - s.y; 
lX = s2HX - s.x; 
lY = s2HY - s.y; 

剩下的就是使用这些花哨的线条样式等实现...

要创建一个新的sprite:

var s:Sprite = new Sprite(); 

添加/从MC空间移除到/:

space.addChild(s); 
space.removeChild(s); 

对于图形使用精灵的图形对象。

s.graphics 

用于设置线条样式,你可以使用:

s.graphics.lineStyle(...) , 
s.graphics.lineBitmapStyle(...), 
s.graphics.lineGradientStyle(...) 

功能,请阅读使用说明书。

s.graphics.moveTo(mX,mY); 
s.graphics.lineTo(lX,lY); 

对于你必须做一些更复杂的东西脉动的影响,如使用吐温类,你可以读到这里:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/transitions/Tween.html

设置线条样式画线使用后

请注意: 精灵并不是复杂的魔法,它们就像MC,但他们没有时间轴等。

精灵在宽度或高度以编程方式更改时尝试缩放。所以不要碰他们,moveTo lineTo自动设置精灵的大小...

+0

对不起,但因为我是新来的闪光我不明白你的答案。谢谢强硬!什么是hx? x相对于“母亲mc”?我无法访问任何名为mc.hx的属性。当我尝试它时,我尝试使用sp.graphics.moveTo(mx,my)和sp.graphics(lx,lx),但它似乎不起作用。是否有可能添加一些周围的代码?我从来没有工作过精灵。另外我希望光束能够脉动/动画 - 这可以通过你的方式吗?希望这是我的无知,而不是不尊重。再次感谢 – user2237931 2013-04-05 22:53:13

+0

我的意思是,当我尝试它时,我跳过+ hx。我的MC在同一坐标系上,但可能我误解了一些东西 – user2237931 2013-04-05 23:00:51

+0

hx和hy是船上虚构点的x,y坐标。所以他们是相对于船舶的起源。我以为你会想从他们的同一点击中船只,而不是始终。而且我不知道你是如何设置坐标系的船舶和空间原点的。我更喜欢他们在左上角,有些人更喜欢中锋。由于我不知道如何组织你的代码和类,所以我很难推断出一个适合它的例子。但我会给我的答案添加提示。 – Ihsan 2013-04-06 10:44:29