2013-04-05 49 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