Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail From: Lew Newsgroups: comp.lang.java.programmer Subject: Re: JOutlookBar Date: Fri, 27 Apr 2012 13:51:00 -0700 (PDT) Organization: http://groups.google.com Lines: 83 Message-ID: <29372748.3.1335559861001.JavaMail.geo-discussion-forums@pbfk7> References: <33049662.264.1335479370702.JavaMail.geo-discussion-forums@pbcnk4> <15997725.898.1335482389670.JavaMail.geo-discussion-forums@pbbps5> <7588566.806.1335496661608.JavaMail.geo-discussion-forums@pbqv7> NNTP-Posting-Host: 69.28.149.29 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: posting.google.com 1335560188 13719 127.0.0.1 (27 Apr 2012 20:56:28 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 27 Apr 2012 20:56:28 +0000 (UTC) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=69.28.149.29; posting-account=CP-lKQoAAAAGtB5diOuGlDQk0jIwmH0T User-Agent: G2/1.0 X-Received-Bytes: 3832 Xref: csiph.com comp.lang.java.programmer:13950 markspace wrote: > Daniel Pitts wrote: >> Peter Cheung wrote: >>> I already set it to 1ms, but it still runs slowly. >>> >>> So the animation is not smooth. > > >> You're timer simply calls draw. Also, 1ms is really too fast, and will >> cause more harm than good. You should aim for closer to 30hz->60hz. Try >> around 33ms timer. > > > I happen to know a little about animation (graphics is a personal hobby > of mine). The gold standard in animation is 25 frames per second, or 40 > ms in between frames. > > However, as a practical matter, much lower frames rates are acceptable. > Some cheaper animation, like some of the early so-called > "japanimation," used as little as 4 or 6 frames per second in parts of > their work. > > I'd start at 250 ms. 1 ms will clearly overwhelm any normal desktop > system with too much work. Get 250 ms working, then see if it can be > improved. > > >> Ideally, the "work" for your animation should be done in the timer >> handler too (so that your state changes on the timer, not just a redraw). > > This. > > Peter, what I've looked at in your code base is pretty bad. Most of it > is really ugly generated code. Nothing has comments. There's no test > harness that I saw. You need to slow down and write some code by hand, > try to understand what is really going on. One good class is better > than 100 cruddy classes, and it is certainly my impression that the > latter is what you have. Looking at this part of your code, Peter: public class OutlookBarLayout implements LayoutManager2, java.io.Serializable, ActionListener // Why not import Serializable? // Where is the 'serialVersionUID'? { public Hashtable components = new Hashtable(); // Don't use Hashtable public int buttonHeight = 31; private int separatorHeight = 8; private int totalHeight; private int noOfButtonLeft; private int top; private int left; // bad scope, AFAICT, should be a local variable - how is this part of the instance state? private int right; private Timer timer = new Timer(1, this); // Shouldn't this be 'final'? private Container target; private int currentY; public OutlookBarLayout() { } ... You don't need to specify a no-argument, empty constructor. Where are your Javadoc comments? Have you gone over every line of this class and gained comprehension of what it does? Please answer the questions in detail. -- Lew