台灣最大程式設計社群網站
線上人數
2245
 
會員總數:246276
討論主題:189810
歡迎您免費加入會員
討論區列表 >> CSS/HTML5/Bootstarp >> 大大們,請問這題自訂義多邊形~~
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
大大們,請問這題自訂義多邊形~~
價值 : 100 QP  點閱數:1504 回應數:6
樓主

遠仔
門外漢
0 82
1372 260
發送站內信

多邊形
想請問~~
this.graphics.moveTo(x+(Math.cos(start_rad)*outerRadius), y-(Math.sin(start_rad)*outerRadius));
1.請問這裡的x,y是指哪個物件的x,y呢? 以及WHY前面用x+,後面用y-呢?
2.trace(x,y)的結果都是0,0 我將全部的x+跟y-拿掉也可執行,這裡x,y是多餘的麼?
3.為何用moveTo移動繪圖點,也要加上cos,sin?為何不能只給座標呢?


dx = x+Math.cos(start_rad+(step*n)-halfStep)*innerRadius;
6.WHY這裡要-halfStep,下面不用呢?繪製多邊形有什麼公式麼@@?
大大們,麻煩了~~@@

本篇文章發表於2012-08-03 00:34
1樓
回應

香帥
檢舉此回應
我為解釋跟您改一下程式碼如下

本篇文章回覆於2012-08-04 20:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

香帥
檢舉此回應
以上程式碼增加四行第
29,30,44,45
1.請問這裡的x,y是指哪個物件的x,y呢? 以及WHY前面用x+,後面用y-呢?
這是指畫布座標0,0,因為function內x:Number=0, y:Number=0
2.trace(x,y)的結果都是0,0 我將全部的x+跟y-拿掉也可執行,這裡x,y是多餘的麼?
因為他本來就預設0,0,因為function內x:Number=0, y:Number=0
x,y不是多餘的您也可以改從哪一點開始計算
您若將我29,30,44,45這四行拿掉,用您原來的程式碼,在23行插入
x= -500;
y= -500;
那麼圖就會往左上移
3.為何用moveTo移動繪圖點,也要加上cos,sin?為何不能只給座標呢?
cos,sin是要計算在外圓,及內圓的座標阿
第44,45
this.graphics.drawCircle (x,y,outerRadius);
this.graphics.drawCircle (x,y,innerRadius);
畫上內外圓圈您就會看到那座標要在圓圈上一定要用cos,sin去計算
若您要亂畫,就直接給座標就可以了
4.WHY PI要*2呢?
一個圓圈的最大弧度就是圓周長/直徑剛好是 2 pi
halfStep = step/2;//5.這裡用意是?
那是內圓的五個點加上外圓圈5個點剛好是10個點,那麼原來的弧度給5個點去分,當然要再 step/2 才能再分給5個點
//6.WHY這裡要-halfStep,下面不用呢?繪製多邊形有什麼公式麼@@?
因為他內圓的點所以要-halfStep,
下面是畫外圓的點所以不必
繪製多邊形有什麼公式麼@@? ,沒公式,是一群點連接起來成線,再連起來成為多邊
本篇文章回覆於2012-08-04 21:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

遠仔
檢舉此回應
帥大,再請問~~
所以內圓的點一定要-halfStep,這是固定的麼?
不能省略也不能用+的是麼,否則會變形~~
應該沒有特殊情況會變成要寫+halfStep吧~~
本篇文章回覆於2012-08-07 15:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

遠仔
檢舉此回應
多邊形2

帥大,再請問~~
WHY在這題的SampleHittestASK.as中...
//1.請問為何可用rectA.addEventListener(Event.ENTER_FRAME, isHit);
//但卻不能用circle.addEventListener(Event.ENTER_FRAME, isHit);呢?

//2.請問為何可用rectA.addEventListener(Event.ENTER_FRAME, isHit);
//但卻不能用pointStar.addEventListener(Event.ENTER_FRAME, isHit);呢?

本篇文章回覆於2012-08-07 20:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
最有價值解答

香帥
檢舉此回應
to 3#
內圓剛好是外圓角度一半
例如外圓是6,內圓是3
halfStep = 6 /2 = 3
內圓 = 6 - halfStep = 3
因此只能 - ,不能加,若加的,變成 6+halfStep=9,就不對了
to 4#
要用這circle.addEventListener(Event.ENTER_FRAME, isHit);也可以
如以下程式碼,不過由於circle在動,其他兩個不動永遠不會進到circle的ENTER_FRAME事件,只能測碰到座標

也可用
pointStar.addEventListener(Event.ENTER_FRAME, isHit);
如以下程式碼,可以碰到STAR,及座標,但是RECTA不會動因此不會進到STAR去,所以RECTA不會有碰撞事件,我將程式碼將座標改為200,220,因此碰到STAR是真的碰到.
原來程式碼一樣,可以碰到RECTA,及座標,但STAR不會動因此不會進到RECTA去,所以STAR不會有碰撞事件,但作者故意將座標設為
200,200會誤會以為碰到STAR,因此我將程式碼將座標改為200,220,這樣就會更清楚看到了

本篇文章回覆於2012-08-07 23:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

遠仔
檢舉此回應
感恩~~^__^
本篇文章回覆於2012-08-08 16:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.