worldanimator.java
来自「Java游戏高级编程!!很不错的!!!Java游戏高级编程!!很不错的」· Java 代码 · 共 168 行
JAVA
168 行
package com.croftsoft.apps.mars.view; import java.awt.*; import java.util.*; import javax.swing.JComponent; import com.croftsoft.core.animation.ComponentAnimator; import com.croftsoft.core.animation.painter.ColorPainter; import com.croftsoft.core.awt.image.ImageCache; import com.croftsoft.core.lang.NullArgumentException; import com.croftsoft.core.media.sound.AudioClipCache; import com.croftsoft.apps.mars.model.AmmoDumpAccessor; import com.croftsoft.apps.mars.model.BulletAccessor; import com.croftsoft.apps.mars.model.ModelAccessor; import com.croftsoft.apps.mars.model.ObstacleAccessor; import com.croftsoft.apps.mars.model.TankAccessor; import com.croftsoft.apps.mars.model.WorldAccessor; /********************************************************************* * ComponentAnimator that maps Models to views. * * @version * 2003-04-17 * @since * 2003-04-14 * @author * <a href="http://www.croftsoft.com/">David Wallace Croft</a> *********************************************************************/ public final class WorldAnimator implements ComponentAnimator ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// { private static final Color COLOR_BULLET = Color.MAGENTA; private static final Color COLOR_OBSTACLE = Color.BLACK; // private final AudioClipCache audioClipCache; private final ImageCache imageCache; private final Map componentAnimatorMap; private final WorldAccessor worldAccessor; // private ModelAccessor [ ] modelAccessors; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// public WorldAnimator ( WorldAccessor worldAccessor, AudioClipCache audioClipCache, ImageCache imageCache ) ////////////////////////////////////////////////////////////////////// { NullArgumentException.check ( this.worldAccessor = worldAccessor ); NullArgumentException.check ( this.audioClipCache = audioClipCache); NullArgumentException.check ( this.imageCache = imageCache ); componentAnimatorMap = new HashMap ( ); modelAccessors = new ModelAccessor [ 0 ]; } ////////////////////////////////////////////////////////////////////// // interface ComponentAnimator methods ////////////////////////////////////////////////////////////////////// public void update ( JComponent component ) ////////////////////////////////////////////////////////////////////// { modelAccessors = worldAccessor.getModelAccessors ( modelAccessors ); for ( int i = 0; i < modelAccessors.length; i++ ) { ModelAccessor modelAccessor = modelAccessors [ i ]; if ( modelAccessor == null ) { break; } ComponentAnimator componentAnimator = getComponentAnimator ( modelAccessor ); componentAnimator.update ( component ); } } public void paint ( JComponent component, Graphics2D graphics ) ////////////////////////////////////////////////////////////////////// { for ( int i = 0; i < modelAccessors.length; i++ ) { ModelAccessor modelAccessor = modelAccessors [ i ]; if ( modelAccessor == null ) { break; } ComponentAnimator componentAnimator = getComponentAnimator ( modelAccessors [ i ] ); componentAnimator.paint ( component, graphics ); } } ////////////////////////////////////////////////////////////////////// // private methods ////////////////////////////////////////////////////////////////////// private ComponentAnimator getComponentAnimator ( ModelAccessor modelAccessor ) ////////////////////////////////////////////////////////////////////// { ComponentAnimator componentAnimator = ( ComponentAnimator ) componentAnimatorMap.get ( modelAccessor ); if ( componentAnimator == null ) { if ( modelAccessor instanceof AmmoDumpAccessor ) { componentAnimator = new AmmoDumpAnimator ( ( AmmoDumpAccessor ) modelAccessor, audioClipCache ); } else if ( modelAccessor instanceof BulletAccessor ) { componentAnimator = new ModelAnimator ( modelAccessor, COLOR_BULLET ); } else if ( modelAccessor instanceof ObstacleAccessor ) { componentAnimator = new ModelAnimator ( modelAccessor, COLOR_OBSTACLE ); } else if ( modelAccessor instanceof TankAccessor ) { componentAnimator = new TankAnimator ( ( TankAccessor ) modelAccessor, imageCache, audioClipCache ); } else { componentAnimator = new ModelAnimator ( modelAccessor ); } componentAnimatorMap.put ( modelAccessor, componentAnimator ); } return componentAnimator; } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?