I make a new version which append 8 gua map. It seems if use clear method in shoes animation speed will not drop as times go.If only clear part of image,speed will drop. A new problem,rotate method operate on whole area of shoes.Is it possible that rotate only operate on a certain part of area?I want 8 gua map keep static,taiji map rotate.
taiji8gua.rb taiji & 8gua both rotate (funny,but not what I want) taiji8gua-ok.rb perform right but speed will drop At first,I thought producing taiji8gua in shoes is a easy job.It is not as I assumed. On Sat, Aug 8, 2009 at 6:32 AM, Ehsanul Hoque <[email protected]>wrote: > Yeah, when you set the rotate method, that rotation sticks around, forgot > to mention. That's why my first example sped up linearly, I forgot to take > that into account. > > I don't think putting a call to animate() inside a method is going to work > properly. It would be better if you had a method that changed the speed > value that is called inside the animate block. Here's an example of how it > might work: > > $speed = 8 > Shoes.app :resizable => false do > transform(:center) > def taiji > image 280, 280, :top => 100, :left => 150 do > # drawing order is important!!! > stroke black > nofill > oval 0, 0, :radius =>140 > #angle1 -> angle2 is clockwise, lead to fill surplus semi-circle > fill black > shape do > move_to 70, 50 > arc_to 140,70,140,140,TWO_PI-PI/2,PI/2 > arc_to 140,210,140,140,PI/2,TWO_PI-PI/2 > arc_to 140,140,280,280,PI/2,TWO_PI-PI/2 > end > stroke white > fill white > oval 70,140,:radius=>70 # erase the surplus black semi-circle > oval 120, 50, :radius =>20 > fill black > oval 120, 190, :radius =>20 > end > end > animate(20) do > clear > stroke black > fill white > oval 150, 100, :radius =>140 > $spin += $speed > $ang.replace "#{$spin}" > rotate $speed > taiji > end > window :width => 150, :height => 70 do > para "Rotate Angle:" > $ang = para "0"; $spin = 0 > button "Reverse" do > $speed *= -1 > end > end > end > > ------------------------------ > Subject: Re: I want to draw a taiji animation by shoes > From: [email protected] > To: [email protected] > Date: Fri, 7 Aug 2009 22:03:08 +0800 > > > Thanks a lot! > > It seems that each step in animation rotate angle is on the basis of > previous angle,not from original position.And if use clear method in > animation,speed of shoes will not be slow.Otherwise,speed will be slower and > slower. > > I append 2 buttons try to control rotate direction(clockwise or > anti-clockwise).But it does not work.Can animate method take effect in > method? > > > On Fri, Aug 7, 2009 at 1:32 AM, Ehsanul Hoque <[email protected]>wrote: > > Actually, it seems my code makes the taiji spin faster as time goes, not > good. This works the right way though: > > Speed = 8 > Shoes.app :width => 600, :height => 600, :resizable => false do > transform(:center) > para "Rotate Angle:" > ang = para "0"; spin = 0 > > def taiji > image 280, 280, :top => 100, :left => 150 do > # drawing order is important!!! > stroke black > nofill > oval 0, 0, :radius =>140 > #angle1 -> angle2 is clockwise, lead to fill surplus semi-circle > fill black > shape do > move_to 70, 50 > arc_to 140,70,140,140,TWO_PI-PI/2,PI/2 > arc_to 140,210,140,140,PI/2,TWO_PI-PI/2 > arc_to 140,140,280,280,PI/2,TWO_PI-PI/2 > end > stroke white > fill white > oval 70,140,:radius=>70 # erase the surplus black semi-circle > oval 120, 50, :radius =>20 > fill black > oval 120, 190, :radius =>20 > end > end > > animate(20) do |i| > clear > stroke black > fill white > oval 150, 100, :radius =>140 > spin += Speed > ang.replace "#{spin}" > rotate Speed #30 * cnt > taiji > end > end > > ------------------------------ > Subject: RE: I want to draw a taiji animation by shoes > From: [email protected] > Date: Thu, 6 Aug 2009 17:23:06 +0000 > > To: [email protected] > > Hey, I just hacked together a solution. The problem was that it was taking > too long to draw, and the angle of spin was quite large. So it looked like > it was going anti-clockwise, when in fact it went clockwise, but far. Shoes > itself is also slow now. Anyways, this code works: > > Speed = 0.1 > Shoes.app :width => 600, :height => 600, :resizable => false do > transform(:center) > para "Rotate Angle:" > ang = para "0" > > def taiji > image 280, 280, :top => 100, :left => 150 do > # drawing order is important!!! > stroke black > nofill > oval 0, 0, :radius =>140 > #angle1 -> angle2 is clockwise, lead to fill surplus semi-circle > fill black > shape do > move_to 70, 50 > arc_to 140,70,140,140,TWO_PI-PI/2,PI/2 > arc_to 140,210,140,140,PI/2,TWO_PI-PI/2 > arc_to 140,140,280,280,PI/2,TWO_PI-PI/2 > end > stroke white > fill white > oval 70,140,:radius=>70 # erase the surplus black semi-circle > oval 120, 50, :radius =>20 > fill black > oval 120, 190, :radius =>20 > end > end > > animate(20) do |i| > clear > #clear backgroud > stroke black > fill white > oval 150, 100, :radius =>140 > spin = i*Speed > ang.replace "#{spin}" > rotate spin #30 * cnt > taiji > end > end > > ------------------------------ > CC: [email protected] > Subject: I want to draw a taiji animation by shoes > From: [email protected] > To: [email protected] > Date: Thu, 6 Aug 2009 22:15:31 +0800 > > hi, > > I'm from China.I want to produce a rotate taiji animation by shoes.But I > found 2 problems. > > 1st,there is no fill() method(filled an enclose area with specified color) > in shoes.So I have > > to first draw black area,then draw a white semi-circle to erase part of > black area to produce > > Taiji map.Maybe someone has better method. > > 2nd,to make rotate animation,I draw a taiji map then rotate a certain angle > in each step.The > > angle increased relate to time.Without animate,the taiji map was displalyed > in correct > > rotated angle.But when I add animate method,the taiji does not rotate as I > expected.Sometimes > > it rotate clockwise,sometimes it rotate anti-clockwise.I don't know why. > > ruby code in attachment. > > > > Jason Zhou > > > ------------------------------ > Get free photo software from Windows Live Click > here.<http://www.windowslive.com/online/photos?ocid=PID23393::T:WLMTAGL:ON:WL:en-US:SI_PH_software:082009> > ------------------------------ > Windows Liveā¢: Keep your life in sync. Check it > out.<http://windowslive.com/explore?ocid=PID23384::T:WLMTAGL:ON:WL:en-US:NF_BR_sync:082009> > > > > ------------------------------ > Get back to school stuff for them and cashback for you. Try Bing > now.<http://www.bing.com/cashback?form=MSHYCB&publ=WLHMTAG&crea=TEXT_MSHYCB_BackToSchool_Cashback_BTSCashback_1x1> >
taiji8gua.rb
Description: Binary data
taiji8gua-ok.rb
Description: Binary data
