当前位置: 首页 > news >正文

网站用自己的电脑做服务器吗公司网站哪个建的好

网站用自己的电脑做服务器吗,公司网站哪个建的好,最近一周国内热点新闻,事业单位网站建设费科目javafx中的tree在最后一部分中#xff0c;您了解了如何创建Sprite#xff0c;为其设置动画并赋予其Behavior。 但是动画效果不是很好#xff0c;因为作为Insectoid#xff0c;您应该总是在飞行的地方看。 记住#xff1a;安全第一#xff01; 我们可以通过创建自定义的Ti… javafx中的tree 在最后一部分中您了解了如何创建Sprite为其设置动画并赋予其Behavior。 但是动画效果不是很好因为作为Insectoid您应该总是在飞行的地方看。 记住安全第一 我们可以通过创建自定义的TileSetAnimation轻松地做到这一点 public class RotatingTileSetAnimation extends TileSetAnimation {private double angle 0;public RotatingTileSetAnimation(TileSet set, int[] indices, float speed) { super(set, indices, speed); }public void setAngle(double angle) { this.angle angle; }Override public void render(Sprite sprite, GraphicsContext context, float alpha, long delta) { context.save(); context.translate(sprite.getWidth() / 2, sprite.getHeight() / 2); context.rotate(angle); context.translate(-sprite.getWidth() / 2, -sprite.getHeight() / 2); super.render(sprite, context, alpha, delta); //To change body of generated methods, choose Tools | Templates. context.restore(); } } 我们可以根据x和y速度计算旋转角度并在渲染之前在我们的GraphicsContext中进行设置。 因此这里有一个子类可以做到这一点 public class LookAheadTileSetAnimation extends RotatingTileSetAnimation {public LookAheadTileSetAnimation(TileSet set, int[] indices, float speed) { super(set, indices, speed); }Override public void render(Sprite sprite, GraphicsContext context, float alpha, long delta) { setAngle(Math.toDegrees(Math.atan2(sprite.getVelocityY(), sprite.getVelocityX()))); super.render(sprite, context, alpha, delta); //To change body of generated methods, choose Tools | Templates. } } 结果如下 很简单不是吗 现在下一步将是添加一些行为到假肢本身。 我希望他们总是检查最接近的敌人并将大炮指向它。 首先我稍微修改了代码然后将炮塔再次分为基地和大炮。 因此当您现在选择一门大炮时炮塔基座将放置在名为“炮塔基座”的TileLayer中。 我只是更改了TurretView类以支持此功能 class TileSetView extends StackPane {Canvas canvas; TileSet cannons; TileSet bases; int selectedIndex 0; Color selected Color.rgb(100, 100, 255, .2);public TileSetView() { }public void setTileSet(final TileSet bases, final TileSet cannons) { this.cannons cannons; this.bases bases; getChildren().clear(); ImageView turretBases new ImageView(); turretBases.setImage(bases.getTileImage());ImageView turretCannons new ImageView(); turretCannons.setImage(cannons.getTileImage());getChildren().addAll(turretBases, turretCannons);canvas new Canvas(cannons.getTileImage().getWidth(), cannons.getTileImage().getHeight()); getChildren().add(canvas); canvas.setOnMouseClicked(new EventHandler() { Override public void handle(MouseEvent t) { double x t.getX(); double y t.getY(); selectedIndex (int) ((int) x / cannons.getTilewidth() (((int) y / cannons.getTileheight()) * cannons.getNumColumns())); updateCanvas(); } }); updateCanvas(); }public int getSelectedGid() { if (bases null) { return -1; } return bases.getFirstgid() selectedIndex; }public int getSelectedIndex(){ return selectedIndex; }public void updateCanvas() { GraphicsContext graphicsContext2D canvas.getGraphicsContext2D(); graphicsContext2D.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); if (selectedIndex 0) { graphicsContext2D.setFill(selected); int x selectedIndex % cannons.getNumColumns(); int y selectedIndex / cannons.getNumColumns(); graphicsContext2D.fillRect(x * cannons.getTilewidth(), y * cannons.getTileheight(), cannons.getTilewidth(), cannons.getTileheight()); } } } 所以这是现在的样子 接下来我们添加大炮。 虽然炮塔基地是简单的瓦片但我们的大炮必须是精灵因此我们可以向它们添加“行为” public class CannonSprite extends Sprite {RotatingTileSetAnimation rotateAnimation;public CannonSprite(GameCanvas parent, RotatingTileSetAnimation animation, String name, double x, double y, int width, int height) { super(parent, animation, name, x, y, width, height, Lookup.EMPTY); this.rotateAnimation animation; addBehaviour(new SpriteBehavior() { Override public boolean perform(Sprite sprite) { Sprite closest null; double dist Double.MAX_VALUE; Collection sprites sprite.getParent().getSprites(); for (Sprite sprite1 : sprites) { if (sprite1 instanceof EnemySprite) { double distance distance(getX(), getY(), sprite1.getX(), sprite1.getY()); if (distance dist) { dist distance; closest sprite1; } } } if (closest ! null) { rotateAnimation.setAngle(Math.toDegrees(Math.atan2(closest.getY() - sprite.getY(),closest.getX() - sprite.getX()))); }return true; } }); }public double distance(double x1, double y1, double x2, double y2) { return Math.sqrt( (x1 - x2) * (x1 - x2)(y1 - y2) * (y1 - y2)); } } 再次我使用RotatingTileSetAnimation并简单地设置角度以便大炮指向最近的敌人。 这是我们得到的 在本部分教程中就是这样。 我们创建了一些自定义动画以使Insectoids朝正确的方向显示并使炮塔始终指向关闭目标。 从这些示例中可以看到游戏引擎试图使将行为添加到Sprite变得非常简单。 在下一部分中我们将对炮塔进行射击。 在Eppleton博客上我们的JCG合作伙伴 Toni Epple 参考 JavaFX中的塔式防御3 。 翻译自: https://www.javacodegeeks.com/2013/10/tower-defense-in-javafx-3.htmljavafx中的tree
http://www.zqtcl.cn/news/455998/

相关文章:

  • 群晖nas可以做网站网页设计与制作步骤
  • 单位网站维护 网站建设岗位兰溪网站建设公司
  • 网站开发什么语言最好网站建设在国内外研究现状
  • 怎么看网站是用什么系统做的永久观看不收费的直播
  • 网站开发如何避免浏览器缓存的影响资讯网站开发的背景
  • 建网站 几个链接站长工具在线平台
  • 东营网站建设策划内容个人备案网站投放广告
  • 建立网站时服务器的基本配置有哪些做网站电信运营许可证
  • 如何阿里巴巴网站做推广方案怎么做网站的浏览栏
  • 织梦做中英文企业网站ui设计工资一般多少钱
  • php网站调试环境搭建关于网站开发的毕业设计
  • 如何在网站上做评比wordpress 图标代码
  • 网站优化建议怎么写pageadmin怎么样
  • 中外商贸网站建设平台合肥响应式网站开发
  • 雨花区区网站建设公司上传文章网站
  • 长春网站z制作自己做背景的网站
  • 浙江英文网站建设陕西百度推广的代理商
  • 怎么看网站蜘蛛网站价格评估 优帮云
  • 南充高端网站建设什么是搜索引擎营销
  • 找做网站的上什么appwordpress esc html
  • 如何做网站效果更好国外效果图网站
  • 西安seo网站推广优化芜湖代理公司注册
  • 某某网站建设策划书2000字长沙专门做网站公司
  • 成都pc网站建设莱州市网站
  • 推广平台网站热狗网黄浦网站建设推广
  • 网站跳出率因素徐州市城乡建设局官方网站
  • 中小型企业 公司网站建设特大新闻凌晨刚刚发生
  • 现在建设网站赚钱吗wordpress简约博客主题
  • 扬州网站商城建设价格凡科互动游戏作弊
  • 嘉定企业网站制作中国空间雷达卫星