2011-10-20 18 views
0

なぜmImageが表示されないのですか?描画可能でない

public class Manager extends Thread{ 
    private SurfaceHolder mSurfaceHolder; 
    private boolean mRunning; 



public Drawable mImage; 
public Manager(SurfaceHolder surfaceHolder, Context context){ 

    mSurfaceHolder = surfaceHolder; 
    mRunning = false; 

    Resources res = context.getResources(); 


     mImage = res.getDrawable(R.drawable.nhero2); 


    public void setRunning(boolean running) 
    { 
     mRunning = running; 
    } 

    public void run() 
    { 
     while (mRunning) 
     { 
      Canvas canvas = null; 
      try 
      { 
       // подготовка Canvas-а 
       canvas = mSurfaceHolder.lockCanvas(); 
       synchronized (mSurfaceHolder) 
       { 
        // собственно рисование 
        //doDraw(canvas); 
        mImage.draw(canvas); 
       } 
      } 
      catch (Exception e) { } 
      finally 
      { 
       if (canvas != null) 
       { 
        mSurfaceHolder.unlockCanvasAndPost(canvas); 
       } 
      } 
     } 
    } 
} 

P.S.すみません4私の英語

P.P.S. 私はhttp://pastebin.com/A5u5UJea

+0

この回答を確認してくださいhttp://stackoverflow.com/questions/7740687/add-image-to-surface-view-in-android –

+0

Lalit Poptani、ありがとうございます! – MarkMark

答えて

1

mImage.setBounds(...);を呼び出す必要があります。それ以外の場合、キャンバスはDrawableをどこに描画するかを知らない。

+0

ありがとうございます!できます :) – MarkMark

0

は、私はあなたが持っている主な問題は、あなたが開始するや否やということだと思いほら フルここにコード(悪いコメントのSRY) クラスマネージャhttp://pastebin.com/Sjd57uqT クラスViewとクラスscrolBckgrを自分scroolシューティングゲームを作成しよう.start();のブール値mRunningのスレッドはfalseであり、スレッドはすぐに終了します。スレッドの開始後に.setRunning(true);を呼び出すと、そのスレッドは既に終了しているため、何の効果もありません。

+0

thxしかし、私はそうは思わない - 実際に 'doDraw()'が働いているのは、Repacleのコメントが歌う場合です – MarkMark

+0

コンストラクタで 'mRunning = true;'を設定しようとしましたが、何も変わっていませんでした – MarkMark

+0

OK、図面付き。 invalidate()メソッドを呼び出そうとするとhttp://developer.android.com/reference/android/view/View.html#invalidate()、それ以外の場合はこのブログ記事http://android-developers.blogspot.comを読んでみてください/2009/05/painless-threading.html –

関連する問題