下記のコードの場合なぜか表示がされません。
OutputScreenメソッドを使わずにpaintメソッドにべた書きした場合はうまく動作します。
Dimension size = getSize();
back = createImage(size.width, size.height);
buffer = back.getGraphics();
このbufferが原因のように思えるのですがこのような使い方はできないのですか?
java
1public class MyApplet extends Applet implements MouseListener { 2 3 Image back; 4 Graphics buffer; 5 private Image enemy; 6 private Image player; 7 Font font; 8 private int drawValueMain = 40; 9 private int drawValueSub = 70; 10 private int drawRectUnder = 700; 11 private int drawLineUnder = 740; 12 private int drawCorner = 15; 13 private int drawStringMainX = 55; 14 private int drawStringSubX = 35; 15 private int drawStringY = 100; 16 private int drawCardWidth = 150; 17 private int drawCardHigh = 200; 18 private int drawCardCenter = 925; 19 private int drawCardOverPlayer = 500; 20 private int drawCardUnderPlayer = 730; 21 private int drawCradInterval = 180; 22 private int drawCardOverEnemy = 50; 23 private int drawCardUnderEnemy = 280; 24 private int BattleFieldX = 400; 25 private int BattleFieldY = 40; 26 private int BattleFieldWidth = 1200; 27 private int BattleFieldHigh = 900; 28 private int BattleFieldPartition = 150; 29 private int profileImageWidth = 100; 30 private int profileImageHigh = 150; 31 private int profileImageAroundWidth = 25; 32 33 private String[] number = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; 34 35 public void init() { 36 addMouseListener(this); 37 enemy = getImage(getCodeBase(), "https://www.sanrio.co.jp/wp-content/uploads/2013/09/osarunomonkichi_b.png"); 38 player = getImage(getCodeBase(), "https://www.sanrio.co.jp/wp-content/uploads/2013/09/hellokitty_b.png"); 39 40 Dimension size = getSize(); 41 back = createImage(size.width, size.height); 42 buffer = back.getGraphics(); 43 } 44 45 public void paint(Graphics g) { 46 OutputScreen(buffer); 47 } 48 49 public void OutputScreen(Graphics g){ 50 font = new Font("DailogInput", Font.BOLD, 70); 51 52 // 表の四角形 53 g.drawRoundRect(drawValueMain, drawValueMain, drawValueSub * 2, drawRectUnder, drawCorner, drawCorner); 54 55 // バトルフィールドの四角形 56 g.drawRoundRect(BattleFieldX, BattleFieldY, BattleFieldWidth, BattleFieldHigh, drawCorner * 2, drawCorner * 2); 57 58 // バトルフィールドの横線 59 g.drawLine(BattleFieldX, (BattleFieldHigh+drawValueMain*2)/2, BattleFieldX+BattleFieldWidth, (BattleFieldHigh+drawValueMain*2)/2); 60 61 // バトルフィールドのキャラ画像との仕切り線 62 g.drawLine(BattleFieldX+BattleFieldPartition, drawValueMain, BattleFieldX+BattleFieldPartition, (BattleFieldHigh+drawValueMain*2)/2); 63 g.drawLine(BattleFieldX+BattleFieldWidth-BattleFieldPartition, (BattleFieldHigh+drawValueMain*2)/2, BattleFieldX+BattleFieldWidth-BattleFieldPartition, BattleFieldHigh+drawValueMain); 64 65 // キャラ画像用の枠 66 g.drawRect(BattleFieldX+profileImageAroundWidth, BattleFieldY+profileImageAroundWidth, profileImageWidth, profileImageHigh); 67 g.drawRect(BattleFieldX+BattleFieldWidth-BattleFieldPartition+profileImageAroundWidth, (BattleFieldHigh+drawValueMain*2)/2+profileImageAroundWidth, profileImageWidth, profileImageHigh); 68 69 // キャラ画像添付 70 g.drawImage(enemy, BattleFieldX+profileImageAroundWidth, BattleFieldY+profileImageAroundWidth, profileImageWidth, profileImageHigh, this); 71 g.drawImage(player, BattleFieldX+BattleFieldWidth-BattleFieldPartition+profileImageAroundWidth, (BattleFieldHigh+drawValueMain*2)/2+profileImageAroundWidth, profileImageWidth, profileImageHigh, this); 72 73 // カード用の枠 player 74 g.drawRect(drawCardCenter, drawCardOverPlayer, drawCardWidth, drawCardHigh); 75 g.drawRect(drawCardCenter-drawCradInterval, drawCardUnderPlayer, drawCardWidth, drawCardHigh); 76 g.drawRect(drawCardCenter, drawCardUnderPlayer, drawCardWidth, drawCardHigh); 77 g.drawRect(drawCardCenter+drawCradInterval, drawCardUnderPlayer, drawCardWidth, drawCardHigh); 78 79 // カード用の枠 enemy 80 g.drawRect(drawCardCenter, drawCardUnderEnemy, drawCardWidth, drawCardHigh); 81 g.drawRect(drawCardCenter-drawCradInterval, drawCardOverEnemy, drawCardWidth, drawCardHigh); 82 g.drawRect(drawCardCenter, drawCardOverEnemy, drawCardWidth, drawCardHigh); 83 g.drawRect(drawCardCenter+drawCradInterval, drawCardOverEnemy, drawCardWidth, drawCardHigh); 84 85 // 表の縦線 86 for (int i = 1; i < 2; i++) { 87 g.drawLine(drawValueMain + drawValueSub * i, drawValueMain, drawValueMain + drawValueSub * i, 88 drawLineUnder); 89 } 90 91 // 表の横線 92 for (int i = 1; i < 10; i++) { 93 g.drawLine(drawValueMain, drawValueMain + drawValueSub * i, drawValueMain + drawValueSub * 2, 94 drawValueMain + drawValueSub * i); 95 } 96 97 // 対戦番号の表示 98 g.setFont(font); 99 for (int i = 0; i < 9; i++) { 100 g.drawString(number[i], drawStringMainX, drawStringY + drawValueSub * i); 101 } 102 g.drawString(number[9], drawStringSubX, drawStringY + drawValueSub * 9); 103 } 104 105 public void mouseClicked(MouseEvent e) { 106 Point point = e.getPoint(); 107 System.out.println("X座標:" + point.x); 108 System.out.println("Y座標:" + point.y); 109 } 110 111 @Override 112 public void mousePressed(MouseEvent e) { 113 114 } 115 116 @Override 117 public void mouseReleased(MouseEvent e) { 118 119 } 120 121 @Override 122 public void mouseEntered(MouseEvent e) { 123 124 } 125 126 @Override 127 public void mouseExited(MouseEvent e) { 128 129 } 130}
回答2件
あなたの回答
tips
プレビュー