スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ASUS MeMO Pad HD7のタッチパネル修復

先月末に新しく「ASUS MeMO Pad HD7」を購入し、アプリのデバッグをおこなっていたのですが、
日に日にタッチパネルの感度がどんどんと悪くなる感じがし、ついには触っていない箇所が反応するようになったので、改善方法をネットで調べてみました。

ASUS_MeMO-Pad-HD-7-8bb087b55006d970.jpg

あいにく初期化以外方法が見つからず、端末内のデータを全て削除してみたけどもちろんダメ…;
しかたなく修理を依頼したところ、無償で見てくれるのは二週間までといわれ、ぎりぎりサポート終了…^^;

「ふざけるな!」

…仕方なく分解してみたところ、おやおや?何かコードが外れかけてるではありませんか!

KIMG0004 (2)

(これは既に修復完了後の状態ですが、分解直後は赤丸で囲ってる部分の二つのコードが外れかかっており、先っちょだけが軽く刺さってる感じでした。)

コードの根元をたどってみるとどうやらタッチパネルから来てるみたいで「はは~ん」状態。

このコードを二つの黒いチップにはめるようにしますが意外としまりがきつくてなかなか入りません…。
ですのでコードの下につまようじを入れて下図のように少し膨らませ、膨らんだ箇所を指で押さえ込むようにすると何とか奥まできっちり入れることができました!

KIMG0007.jpg

コードをかっちり入れ端末を再起動したところ、タップの感度がしっかりと戻っていたので、(今度は外れないようテープで補強も行い)ひとまずこれで一件落着です!

KIMG0001.jpg

…ちなみに補強をおこなう際にですが、
奥まできっちりと差し込まないとタッチパネルが暴走を始めるので注意!
差し込む際には一度スリープか電源を落とすことをお勧めします。以上!
スポンサーサイト

データ画面の実装~完~

だいぶ前にちょこっとだけ紹介したような気がする"データ画面の実装"です。

前回の段階ではハイスコアを獲得した時にしかスコアは保存されませんでしたが、それだけだとちょっと物足りないので5位までのスコアを記録できるようにしました。

~前回の画面~

Screenshot_2014-02-11-08-16-13.png

↓↓↓↓↓

~実装後の画面~

Screenshot_2014-10-06-09-10-38.jpg

今回は少しコードを解説していきますね。

if (一位データ.getInstance(getBaseActivity()).get一位() == 0) {
一位テキスト = new Text(352, 96, font, "- - - - -",
20, new TextOptions(HorizontalAlign.LEFT),
getBaseActivity().getVertexBufferObjectManager());
一位テキスト.setColor(1, 1, 1);
一位テキスト.setScale(1);
attachChild(一位テキスト);
} else {
一位テキスト = new Text(352, 96, font, ""
+ 一位データ.getInstance(getBaseActivity()).get一位(),
20, new TextOptions(HorizontalAlign.LEFT),
getBaseActivity().getVertexBufferObjectManager());
一位テキスト.setColor(1, 1, 1);
一位テキスト.setScale(1);
attachChild(一位テキスト);
}

ここはゲームのタイトル画面全般を管理する"InitialSceneクラス"です。
普段は"MainSceneクラス"内のゲームのメイン部分のコードを解説していたため、タイトルシーンに関してはあまり触れることはありませんでした。
今回はここでAndengineが持つテキスト型の変数"一位テキスト"に文字データを代入してやります。
ちなみに、ここでifとelseに分岐させ、スコアの値が0のときにわざわざ"ハイフン(-)"を表示させているのは、単に"0"と表示させるのはカッコ悪いと思ったからです。

…それより重要なのがこの"一位データ"というクラス。
(1行目で呼び出してる"if (一位データ.getInstance(getBaseActivity()).get一位() == 0) {"の部分。)
ここでスコアの保存データを管理しています。(ちょっとのぞいてみましょう!)

public class 一位データ {

// 自身のインスタンス
private static 一位データ instance;
// シングルトン
public static synchronized 一位データ getInstance(Context context) {
if (instance == null) {
instance = new 一位データ(context);
}
return instance;
}

private static SharedPreferences settings;
private static SharedPreferences.Editor editor;

private 一位データ(Context context) {
settings = context.getSharedPreferences("shared_preference_1.0", 0);
editor = settings.edit();
}

public int get一位() {
return settings.getInt("一位", 0);
}

public void set一位(int value) {
editor.putInt("一位", value);
editor.commit();
}
}

…失礼ながら例のテキストのサンプル(元SPUtilクラス)をそのままコピペしたものです。
まだ良く分からないのでテキストを使って解説してしたいと思います。

例のテキストによると…「基本的なクラスですので解説は不要ですね。」



…^^;



…た、確かに基本的過ぎる内容ですね;
というわけで次に行きましょうか;

ここはゲームの大元となっている"MainSceneクラス"の内部です。

public void GameOver() {
ゲームオーバーかどうか = true;
// Sceneのタッチリスナーを解除
setOnSceneTouchListener(null);
// 距離を更新時は保存
if (現在のスコア > 一位データ.getInstance(getBaseActivity()).get一位()) {
// 四位の記録を五位に…
五位データ.getInstance(getBaseActivity()).set五位(
四位データ.getInstance(getBaseActivity()).get四位());
// 三位の記録を四位に…
四位データ.getInstance(getBaseActivity()).set四位(
三位データ.getInstance(getBaseActivity()).get三位());
// 二位の記録を三位に…
三位データ.getInstance(getBaseActivity()).set三位(
二位データ.getInstance(getBaseActivity()).get二位());
// 一位の記録を二位に…
二位データ.getInstance(getBaseActivity()).set二位(
一位データ.getInstance(getBaseActivity()).get一位());
// ここで一位の距離を保存
一位データ.getInstance(getBaseActivity()).set一位(現在のスコア);
} else if (現在のスコア > 二位データ.getInstance(getBaseActivity()).get二位()) {
// 四位の記録を五位に…
五位データ.getInstance(getBaseActivity()).set五位(
四位データ.getInstance(getBaseActivity()).get四位());
// 三位の記録を四位に…
四位データ.getInstance(getBaseActivity()).set四位(
三位データ.getInstance(getBaseActivity()).get三位());
// 二位の記録を三位に…
三位データ.getInstance(getBaseActivity()).set三位(
二位データ.getInstance(getBaseActivity()).get二位());
// ここで二位の距離を保存
二位データ.getInstance(getBaseActivity()).set二位(現在のスコア);
} else if (現在のスコア > 三位データ.getInstance(getBaseActivity()).get三位()) {
// 四位の記録を五位に…
五位データ.getInstance(getBaseActivity()).set五位(
四位データ.getInstance(getBaseActivity()).get四位());
// 三位の記録を四位に…
四位データ.getInstance(getBaseActivity()).set四位(
三位データ.getInstance(getBaseActivity()).get三位());
// ここで三位の距離を保存
三位データ.getInstance(getBaseActivity()).set三位(現在のスコア);
} else if (現在のスコア > 四位データ.getInstance(getBaseActivity()).get四位()) {
// 四位の記録を五位に…
五位データ.getInstance(getBaseActivity()).set五位(
四位データ.getInstance(getBaseActivity()).get四位());
// ここで四位の距離を保存
四位データ.getInstance(getBaseActivity()).set四位(現在のスコア);
} else if (現在のスコア > 五位データ.getInstance(getBaseActivity()).get五位()) {
// ここで五位の距離を保存
五位データ.getInstance(getBaseActivity()).set五位(現在のスコア);
}
// 解説範囲外のため省略…
}

1行目にある"GameOver()メソッド"は文字通り、プレイヤーがゲームオーバーになったときに呼び出されるメソッドです。
…つまり、ゲームが終了したタイミングでスコアを保存しているというわけですね!

では、6行目から見ていってください。
"if (現在のスコア > 一位データ.getInstance(getBaseActivity()).get一位()) {"とありますがこれはゲーム内で獲得したスコアがハイスコアよりも大きいかを調べています。

既に登録済みのハイスコアよりもゲーム中で獲得したスコアの方が大きい場合は…、
20行目の処理"一位データ.getInstance(getBaseActivity()).set一位(現在のスコア);"で先ほどの"一位データクラス"に獲得したスコア値を代入してあげます。
もちろんスコアが登録されていない場合も同じですね。

あ…!待ってください!
それだけだと、ただスコアが保存されるだけの処理になってしまい、以前に獲得したスコアはそのまま上書きされ消えてしまうので7行目~18行目の処理を行い、古いハイスコアは下位のランクに落としてあげるようにします。

これで一件落着ですね!

動画を撮りたいねん

おひさしぶりぶり~!みんなかさぶたしてたゾ~!(それを言うなら"ごぶさた"でしょ!)
…オホンッ!

とりあえずここ1ヶ月間でゲームの方にかなりの仕様変更があり、コードの打ち込みに集中していました。
仕様変更などは先にやっておかないと今後のコースの制作に大きく影響を及ぼすので、とりあえず形だけでも先に作ってしまおうというわけです。

Screenshot_2014-10-03-00-00-25.jpg

Screenshot_2014-10-02-23-57-33.jpg

Screenshot_2014-10-03-00-01-06.jpg

でも、ぶっちゃけ「コースの1-1」ぐらいは既に完成していて、gdgdながらも一応遊べるようになったので、YouTubeのkenjik3のチャンネルにて「コース1-1」のテストプレイ動画をうpろうとしたのですが、「そもそもどうやってプレイ動画を撮りゃいいの?」ってのが現状;

色々調べてみたら端末をルート化(よく分からんけど…)しないといけなかったり、通販でキャプチャボードを購入する必要だがあったりと大変めんどくさい…。

一応フリソフの「androidscreencast」というソフトを使ってゲームのプレイ動画を撮ることは出来たものの…
「音は出ないわ」、「画面がカクカクだわ」、「端末もカクカクになるわ」、でとても見せられたもんじゃないです^^;

端末のバージョンがチョコレートなら「screenrecord」を使って無料かつ高画質で録画できるみたいですが、残念ながら今俺の持っているASUS HD7には対応しておりませんでした;(泣

…てなわけで現状は「プレイ動画撮りたいねんけど撮られへんねん」という状況ですね。

もしこの記事をご覧の方で「簡単 && 無料 && 高画質」で録画できる方法を知っておられましたらぜひ俺に教えてくださいね!
もし教えてくださった方には特別に「このゲームのエンディングに名前を載せて差し上げます」ので良かったらこの機会に是非!

…え?載せてほしくないっですって?…あ、そうですか…失礼しました…。

プロフィール

岡本 賢治

Author:岡本 賢治
 
☆☆☆☆☆☆☆☆☆☆☆☆
 
Android専用アクションゲーム
「スーパーけんじラン」好評配信中!
 
↓↓↓↓↓↓↓↓↓↓↓↓

 
・公式サイトはこちらから
http://okamotodo.jimdo.com/

最新トラックバック

アクセスカウンター

オンラインカウンター

現在の閲覧者数:

検索フォーム

ブロとも申請フォーム

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。