ドゥアイネットのプログラマー、湯川が開発日記を綴ります。

CALENDAR
S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
<< November 2018 >>
ARCHIVES
CATEGORIES
setInterval
 flash liteでクイズを作成していて、
回答後に○×を表示したあと、
次の問題に行く前にちょっと間をあけるようにできないかと調べました。

setIntervalというのが使えました。

これは指定した間隔で関数などの処理を繰り返すものでした。

以下のようにすると、1秒ごとに繰り返してfunctionを実行してくれます。

  setInterval(
    function ()
    {
      //ここに処理
    }
    ,1000
  );

このままでは処理を繰り返してしまうので以下のようにしました。

  var intervalID:Number =
    setInterval(
      function ()
      {
        //clearIntervalで繰り返しを終わる
        clearInterval(intervalID);
        //ここに処理
      }
      ,1000
    );
    
こうすると1秒後に処理を実行してくれます。

これで間をあけることができました。もうちょっといい方法はないんですかね。
| flashlite | 17:25 | comments(0) | - |
flash liteでのimport
 flash liteで、クラスを定義して外部ファイルにしました。
外部ファイルをimportするには

import クラス名

でいいのですが、クラスが増えてくると、フォルダをつくって分類したくなります。

フォルダをつくって移動して以下のようにしてみましたが、参照できません。。
※フォルダ名を「parts」クラス名を「test」とします。

import parts/test

これでもだめです。

import ./parts/test


ならこれはと試したところうまくいきました。

import parts.test


class parts.test{
 ...
}

クラスのほうも以下のように定義にフォルダ名を入れないといけませんでした。

これで整理して開発をすすめられそうです。

| flashlite | 18:17 | comments(0) | - |
上下キーイベント
上下キーで予定を選択できるようにflashLiteで実装しました。
画像

最初は以下の方法でやってみました。

オブジェクトを作成して、キーイベントを取得する方法です。

var v_keyListener:Object = new Object();

v_keyListener.onKeyDown = function() {
 if (Key.getCode() == Key.UP){
  trace("上");
 }
 else if  (Key.getCode() == Key.DOWN){
  trace("下");
 }
};

Key.addListener(v_keyListener);

開発環境では、これで上下キーイベントをとることができたのですが、
実機だとイベントをとることができません。
※ソフトバンクの携帯だけイベントをとれました。

以下のサイトを参考にして、コードを書き換えました。
http://blog.nautes.cc/?p=128

ダミーボタンを用意して、それがフォーカスされたイベントを
利用して、上下キーどちらが押されたかを取得しています。
画像
※左下の青い3つのボタンがダミーボタンです。

ボタンは透明にしてフォーカス枠を表示しないように設定します。
this.upDown_1._alpha = 0;
this.upDown_1._focusrect = false;

ボタン1
on (rollOver) {

 if (_root.g_upDownFlg == -1){
  trace("上");
 }
 if (_root.g_upDownFlg == 2) {
  trace("上");
 } else if (_root.g_upDownFlg == 3) {
  trace("下");
 }
 _root.g_upDownFlg = 1;
}

ボタン2
on (rollOver) {

 _focusrect=false
 if (_root.g_upDownFlg ==3) {
  trace("上");
 } else if (_root.g_upDownFlg == 1) {
  trace("下");
 }
 _root.g_upDownFlg = 2;
}

ボタン3
on (rollOver) {

 if (_root.g_upDownFlg == -1){
  trace("上");
 }
 
 if (_root.g_upDownFlg == 1) {
  trace("上");
 } else if (_root.g_upDownFlg == 2) {
  trace("下");
 }
 _root.g_upDownFlg = 3;
}

この方法で、ソフトバンク以外でも上下キーイベントができました。
| flashlite | 14:01 | comments(0) | - |
携帯版スマートスケジューラ
携帯版スマートスケジューラをリリースしました。
スマートスケジューラのページにも紹介ページが追加されています。

http://www.dinss.jp/mobile/

操作ができるデモも用意していますので、
対応する機種をお持ちの方は、試していただければと思います。

このQRコードからも携帯でアクセスできます。

※アクセスしたあとに、そのまま「ログイン」をクリックしてください。
| flashlite | 17:58 | comments(0) | - |
IME設定(SetInputTextType)
flashLiteでようやくテキスト入力モードの設定ができました。
「fscommand2」で「SetInputTextType」を指定してやると設定できます。

fscommand2("SetInputTextType", 対象テキストボックス変数名, 入力モード文字列);

入力モード文字列は以下の6つです。
1.Numeric 数値のみ (0 〜 9)
2.Alpha アルファベット文字のみ (A 〜 Z、a 〜 z)
3.Alphanumeric 英数字のみ (0 〜 9、A 〜 Z、a 〜 z)
4.Latin ラテン文字のみ (英数字と句読記号)
5.NonLatin 非ラテン文字のみ (漢字とかななど)
6.NoRestriction デフォルトのモード

以下のようにテキストボックスの変数名をセットしてプログラムに「fscommand2」を書きます。
画像

fscommand2("SetInputTextType", "uidlogin", "Alphanumeric");

これで、入力モードがセットできました。
| flashlite | 11:58 | comments(0) | - |
flashlite2.0でのアニメーション
flashlite2.0ではTweenが使えます。

こんな感じです。
new mx.transitions.Tween(target, "_height",mx.transitions.easing.Regular.easeOut, 325, 0, 0.3, true);
上記のように書くと対象の高さが325から0に0.3秒かけて変わります。

終了イベントも以下のように書くと取得することができます。
var v_tween:Object = new mx.transitions.Tween(target, "_height",mx.transitions.easing.Regular.easeOut, 325, 0, .3, true);
v_tween.onMotionFinished = function() {
 trace("Tween終了!");
};

これを使ってアニメーションするようにはなったのですが、
実機(携帯)で見ると動きがスムーズではありません。。

やはり携帯では動きを小さくして、うまく見せないといけないようです。
| flashlite | 18:51 | comments(0) | - |
ひととおりできました
flashlite2.0を使って、スマートスケジューラの携帯版を開発しました。
予定していた機能はひととおり実装できました。

ログイン画面
画像
ちょっと暗いくて地味という意見もありますので、
変更するかもしれません。

週間表示
画像
予定のある時間を色で表示しています。
携帯の「4」を押すと前の日へ、「6」を押すと次の日へ移動します。
はじっこまでいったら次の週を表示します。
「5」を押すと、1日拡大表示になります。
画像
この状態でも「4」「6」で日の移動ができます。
もう一度「5」を押すと週間表示に戻ります。

flashlite2.0なので、全ての携帯で動くわけではないですが、
auでは多くの機種で動くのではと思います。
docomoも新しい機種では動作確認できました。
| flashlite | 18:31 | comments(0) | - |
flashlite 実機でのテスト
携帯版のスケジューラがエミュレータで動作するようになったので、
実際に携帯で実行してみました(バージョンは2.0)。

結果docomo新しい携帯では表示されましたが、
au携帯では表示されませんでした。
PHPで取得したデータがうまく読み取れていないようです。

文字コードをshift-jisにしたり、いろいろ試したのですが
全然表示されません。。。

原因をつきとめるのに時間がかかりましたが、ようやく見つけました。

PHPで、データXMLを書き出すときのヘッダーを
header('Content-Type: text/html; charset=shift_jis');
としていたのを
header('Content-Type: text/xml; charset=shift_jis');
としたら取得したデータが表示されるようになりました。

画像

どうもau携帯では、htmlとしてデータを受け取っていたので
表示できなかったようです。

これから先は忘れないようにメモ。
文字コードは「shift-jis」
ヘッダーはheader('Content-Type: text/xml; charset=shift_jis');
| flashlite | 17:46 | comments(0) | - |
FlashLite2.0でのXML解析
FlashLite2.0からXMLを読み込めるようになっています。

こんな感じで、PHPへパラメータをPOSTして動的なXMLを読むこともできます。

var email:LoadVars = new LoadVars();
email.emailFrom = emailFrom_txt.text;
email.emailTo = emailTo_txt.text;
email.emailSubject = emailSubject_txt.text;
email.emailBody = emailBody_txt.text;
email.sendAndLoad("phpへのパス", emailResponse, "POST");


ただ、読み込んだ後の値をとるときが、xml.firstNode.nodeValue・・・と
どこを参照しているのかがわかりにくいです。

ちょっと検索してみたら「XpathAPI」がみつかりました。

「XpathAPI」をつかえば、読み込んだXMLの参照も簡単です。

FlashLite1.1と2.0ではつくりやすさが全然違いますね。
| flashlite | 09:07 | comments(0) | - |
埋め込みフォント
flashliteは開発環境では、いろんなフォントを使えますが、
実際は、実行する携帯に入っているフォントが使用されます。
フォントサイズも最小12ptぐらいしか使えません。
携帯なのでもう少し小さいフォントで表示したいところです。

以下は間違いでした。
空白のテキストに「埋め込み」を使ってもファイルサイズは大きくなりませんが、文字を入力して埋め込みを使うと、1MBを超えました。埋め込みは使うことはできないようです。

小さいフォントを使うには埋め込みフォントを使わないといけません。
なので埋め込んでみました。
「すべての文字」を埋め込むと270KBくらいになりました。
「日本語のみ」を埋め込むと60KBくらいになりました。
60KBなら携帯で使えるサイズですが、ちょっと大きいような気もします。
もう少し、見せ方とかを考えてから、埋め込みを使うか、使わないかを決めようと思います。
| flashlite | 19:08 | comments(0) | - |
| 1/2PAGES | >>