2011年12月14日水曜日

ローカルでのswf読み込み

フラッシュでnavigateToURLなど、別ファイルへのリンクや読み込みを行うと、セキュリティサンドボックス侵害のメッセージが表示され、読み込むことができない。
アップロードすれば問題無く動くのだが、教材やプレゼンテーション資料などローカルでの運用を想定している場合は困った事になる。
特殊な処理が必要かと思ったらなんのことは無く、htmlを1行直せばいいだけでした。

<!--<param name="allowScriptAccess" value="sameDomain" />-->
      <param name="allowScriptAccess" value="always" />

sameDomainをalwaysへ変更。
それだけです。

以下のサイトにて詳しく解説してくれている。
http://www.ueno-blog.jpn.org/?p=500

2011年12月12日月曜日

childNodesについて

childNodesで取得できるもの
childNodes[0] 自分自身
childNodes[1] 自分の下位の階層のひとつめ
childNodes[2] 自分の下位の階層のふたつめ
と思われる?


    ■親メニュー1
<div style="display:none" onclick="clickMenu(event,this);">
        □子メニュー1
        <div style="display:none" onclick="clickMenu(event,this);">
            ◆孫メニュー1
            </div>  
          <div style="display:none" onclick="clickMenu(event,this);">
            ◆孫メニュー1-2
            </div>
          <div style="display:none" onclick="clickMenu(event,this);">
            ◆孫メニュー1-3
            </div>      
          <div style="display:none" onclick="clickMenu(event,this);">
            ◆孫メニュー1-4
            </div>                                      
        </div>
    </div>
をalert("menu.childNodes.length" + menu.childNodes.length);で表示させた場合
クリック時は3と表示される( 自分+孫が2つ)
後日詳細確認
以下が参考になりそう
http://allabout.co.jp/gm/gc/24070/

2011年12月7日水曜日

javascriptで数値を文字列に

数値を文字列に変換する関数toString()みたいなものがあるかと思っていたらないらしい。
以下で配列に全角数値と半角数値を設定してfor文で回すサンプルを解説してくれている。

http://gecko.hp2.jp/2009/10/09/%E3%80%90javascript%E3%80%91onclick%E3%81%95%E3%82%8C%E3%81%9F%E6%99%82%E3%81%AEthis%E8%87%AA%E5%88%86%E8%87%AA%E8%BA%AB%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E3%81%84%E3%80%82/  
取り急ぎこの手法を用いるが正規表現でもう少しましになるとか。
後日試すことに。

javascriptで数値を文字列に

数値を文字列に変換する関数toString()みたいなものがあるかと思っていたらないらしい。
以下で配列に全角数値と半角数値を設定してfor文で回すサンプルを解説してくれている。

http://gecko.hp2.jp/2009/10/09/%E3%80%90javascript%E3%80%91onclick%E3%81%95%E3%82%8C%E3%81%9F%E6%99%82%E3%81%AEthis%E8%87%AA%E5%88%86%E8%87%AA%E8%BA%AB%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E3%81%84%E3%80%82/  
取り急ぎこの手法を用いるが正規表現でもう少しましになるとか。
後日試すことに。

2011年10月13日木曜日

flashでz座標を設定したら画質がわるくなったときの対応

bmpObject.z=0;

のように写真や写真内包オブジェクトにz座標を設定すると、画質がボケたようになってしまう(デフォルトのまま(つまり0)であっても発生)。
どうやら設定しただけでスムージングが自動的に行われるらしい

試してわかった対処法は二つ

1.stageの描画品質を落とす
stage.quality = StageQuality.LOW;
と設定すると、スムージングが行われなくなり、ボケが回避される。
ただこの設定はstage全体に適用されるため、対象とする写真や他の写真(または内包displayObject)全ての座標を整数(つまりx=1.5とかはダメ)にする必要がある。
こんな感じ
bmp.x=Math.floor(bmp.x);

2.対象のdisplayObjectに新規作成matrixを適用する。
bmp.transform.matrix=new Matrix(1 , 0 , 0 , 1 , bmp.x , bmp.y);
なぜだかわからないが一応治る。z座標設定がクリアされるのかも。

今回は1の方法を用い、かつシーンに応じてStageQuality.LOWと、StageQuality.MIDEUMを切り替えて設定する。
なおTweenの終了時点でStageQualityを切り替えると目立つのでクリック時点か、もっと前に切り替えておく必要がある。

2011年9月25日日曜日

chromeで埋め込みフォントがずれるケースがある

Flashで数値部分だけ埋め込みフォントを用いる場合がある。
埋め込みフォントは重くなるため、日本語全部を埋め込むのはほとんど行わないが、
数値やアルファベット程度であれば軽いうえ、見た目もきれい、しかも拡大縮小しても汚くならないので重宝する。
通常
for (var i:int=0 ; i<10 ; i++){
 ボタン[ i ].text=i.toString();
}
などと設定している。
ところが今回なぜかchromeで文字配置が左にwidthの半分ぐらいずれる問題が発生している。
他のブラウザでは問題ないのだが?
今のところ解決策無し。
今回はアウトライン化してライブラリにmc保存して対応。ボタン数が少なかったからよかったけど大量の場合はどうする?

2011年9月22日木曜日

actionScriptで型を調べる

typeof?とか難しく考えてしまって・・・。
結局
privar function clicked(event:Event):void{
 if(event.target is  PersonalPageBtnPrevNext(自分のクラス){
     //処理
 }
}
のように 単純に is を使えばよかったらしい。

2011年8月25日木曜日

-webkit-tap-highlight-colorについて

iPhoneでa要素をタップしたときにハイライトされるときの色を制御する
http://blog.webcreativepark.net/2011/06/09-201210.html
にて詳しく解説してくれている。
iPhoneのみの限定と考えて方がよいかも。

2011年8月19日金曜日

border-radiusの解釈の違い(safari vs firefox)

イメージ画像をcssにて角丸または円で表示したかったのだが、border-radiusを用いるとsafariとffでは表示が違う。解釈が違うらしい。
safariでは円の中以外の部分は表示されないが、ffでは全て表示される。
overflow:hiddenを設定しても同様。


以下にて詳しく解説してくれている。
http://www.pxt.jp/ja/diary/article/226/index.html

2011年8月17日水曜日

iPhone(3GS)とINFOBAR A01の文字サイズ差異について

iPhoneは320×480ピクセル に対して、
INFOBAR A01は3.7インチQHD(540×960ピクセル)
画面の大きさはほぼ同じなので、全ての見た目、特に文字は70%ぐらいの大きさになりみずらくなってしまう。
一方iPhone4は640×960ピクセルに向上したが、従来のサイトはそのまま表示できる仕様なので幅320ピクセルベースで作って問題ないらしい。


2011年8月16日火曜日

ワイシャツの襟汚れを真っ白にする裏技

以下にて解説してくれている。
http://komachi.yomiuri.co.jp/t/2010/1012/354817.htm

・重層と酸素系漂白剤を併用し
・シャツにすりこみ
・アイロンのスチームを当てる
という手順らしい。

これまで結構白シャツは苦労していたのだが・・・。
近日試してみよう。

2011年8月10日水曜日

androidアプリ内に外部ファイルを含めてしまう

ウェブサイト想定のswfの場合、loaderなどでxmlやら画像やらを読み込んでもさほど問題ないわけだが、androidアプリの場合、通信速度が遅いので(だからこそアプリにするわけだが)都度読み込みなどは行いたくない。
swfに埋め込む(fla内ライブラリに入れてリンケージを設定する)手段もあるのだが、既存のコンテンツをアプリ化するとき相当な手間となってしまう。
そこでアプリ内の同梱する手を用いることにする。
フラッシュでパブリッシュ時画面の一般タブで「含めるファイル」にファイル名やフォルダを記入すれば同梱されるようだ。
以下URLで詳しく解説してくれている。
http://www.as-game.net/article/185158928.html
本件は実機でテスト後に追記する予定

2011年8月6日土曜日

GESTURE_ZOOMはそのまま使わない

TransformGestureEvent.GESTURE_ZOOMは指を離す前を1としているので、一回指を離すとクリアされてしまうので(次回取得したevent.scaleXは1である)、ズーム拡大したい場合はそのままevent.scaleXをあてはめるのではなく、(既にスケールアップまたはダウンされている)現状のスケールにevent.scaleXを掛けるか、width、heightで調整するなどの必要がある。

コードはこんな感じ
private function  onZoom(event:TransformGestureEvent):void {

dtf._text = event.scaleX.toString() ;
var target:Sprite = event.currentTarget as Sprite;


 //sp.scaleX = event.scaleX; ←これはだめ
sp.scaleX *= event.scaleX;
sp.scaleY *= event.scaleY;
}

2011年7月22日金曜日

送信確認のためbccでGmailに送ると「送信済みメール」に入っている件

outlookExpressで送信、bccにGmailアドレスをいれると、
なぜか送信済みに入っている。

以下で詳しく解説してくれている。
http://www.vi2tto.jp/entry/20110112126.php

アカウントで送信用のアドレスとして設定しているメールアドレス(通常他のメーラーで使っている自分のアドレスだね)からメールが届いた場合、自動的に「送信済み」に入る仕様らしい。
手動になれているので少々混乱

2011年7月21日木曜日

androidではMouseEvent.CLICKではなくMouseEvent.MOUSE_DOWNを使う

画面タッチのときの挙動が不安定だと思ったので、MouseEvent.CLICKをMouseEvent.MOUSE_DOWNへ切り替えたところうまく動くようになった(みたい)。従来MouseEvent.MOUSE_DOWNはドラッグの前処理的な扱をしていたのだが、通常サイトでもandroid携帯への表示を考慮するならば、ボタンに設定されていたクリックをすべて変更する必要がある

2011年7月20日水曜日

javascriptでのクラス設定

http://jsdo.it/clockmaker/particleにおける冒頭のクラス定義

// -----------------------------------------
// クラス定義
// -----------------------------------------
/**
* パーティクル
*/
function Particle() {
  // コンストラクタを呼び出し
  this.initialize.apply(this, arguments);
}
Particle.prototype = {
  /** コンストラクタ */
  initialize: function(x, y) {
    this.x = x;
    this.y = y;
  },
  x : 0, // X座標
  y : 0, // X座標
  vx : 0, // X方向の速さ
  vy : 0, // Y方向の速さ
  next : null // LinkedListの参照
};
につき調査


以下が詳しい
http://blog.livedoor.jp/aki_mana/archives/2383135.html

function Particle(){
}
でとりあえずクラスを生成し、
中味についてはprototypeを用い後で設定する、ということか?

2011年7月17日日曜日

iPhoneやandroid携帯でロード後URLバー分自動で下げる

iPhoneやandroid携帯でロード後URLバー分自動で下げると表示領域が広がり、かつ雰囲気がいい。

jQueryを組み込み、以下指定する
setTimeout("scrollTo(0,1)", 100);

実装はこんな感じ

// JavaScript Document
$(document).ready(function(){
init();
});

function init(){
setTimeout("scrollTo(0,1)", 100);
}

CSS:背景画像(background)の中央配置

以下で詳しく解説していくれている
http://kumacrow.blog111.fc2.com/blog-entry-296.html#bg-position
background-positionに以下の指定を行う。

  • left top
  • left center
  • left bottom
  • center top
  • center center
  • center bottom
  • right top
  • right center
  • right bottom

ブレゼンハムの直線描画アルゴリズム

wonderFLにて使用されている。
bitmapにCPUにあまり負荷をかけずに直線を描画するためのロジック。
まじめに直線を書こうとすると直線をxの長さと、yの長さに分解し、角度を計算するなど三角関数を使用するが、これはとても負荷がかかる。
しかもピクセル描画すればいいので、厳密に計算しても意味なない。
そこで簡便な計算方法を用い描画を高速させている。

以下その手法


◆縦移動より横移動の方が多い場合=(x1-x0)>(y1-y0)の場合
1.横移動は必ず行う
2.縦移動は移動距離がおおきかったら行う。
3.少なかったら行わない。
4.本来行うべきなのに行わないので誤差がでる。その誤差を貯めておく。
5.ためた誤差が一定の数値を超えたら縦移動する

◆横移動より縦移動の方が多い場合(x1-x0)<(y1-y0)の場合
上記縦と横を入れ替えて同じ計算を実施する
ソースはこんな感じ


package {
import flash.desktop.NotificationType;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;

public class Blesenham extends Sprite {
private var _canvas:BitmapData;
private var point_0:Point;
private var point_1:Point;

function Blesenham() {
//set canvas
_canvas = new BitmapData(stage.stageWidth , stage.stageHeight , false , 0x000000);
addChild(new Bitmap(_canvas) );
//set event
stage.addEventListener(MouseEvent.MOUSE_DOWN , onMousedown);
}
private function onMousedown(event:MouseEvent):void {
var target:MouseEvent = event.currentTarget as MouseEvent;
//イベント引き継ぎ
if (point_1) {
//二つポイントがある 描画取り消し
point_0 = null;
point_1 = null;
_canvas.fillRect(_canvas.rect , 0x000000);
}else if(point_0){
//1つポイントがある 二つ目を登録し描画
point_1 = new Point(mouseX , mouseY);
_canvas.setPixel(mouseX , mouseY , 0xFF0000);
_drawLine(point_0.x , point_0.y , point_1.x , point_1.y , 0xFF0000 , 1.0);
trace(point_1);
}else {
//1つもポイントが無い
point_0 = new Point(mouseX , mouseY);
_canvas.setPixel(mouseX , mouseY , 0xFF0000);
trace(point_0);
}
}
private function _drawLine(x0:int , y0:int , x1:int , y1:int , color:int , alpha:Number):void {
var steep:Boolean = Math.abs(y1 - y0) > Math.abs(x1 - x0);//x移動より y移動の方が大きい
/*
* こんな感じだとtrueになる
* ■
*  ■
*   ■
*    ■
*/
var tmp:int;
if (steep) {
//x移動より y移動の方が大きいときはxとyの値を入れ替えるそして書くときも入れ替える
//計算手順の簡略化のためかも。
tmp = x0;
x0 = y0;
y0 = tmp;
tmp = x1;
x1 = y1;
y1 = tmp;
}
if (x0 > x1) {
//①マイナス向けに移動してたらx0とx1を入れ替える→右から書こうが左から書こうが同じだよってことか
tmp = x0;
x0 = x1;
x1 = tmp;
tmp = y0;
y0 = y1;
y1 = tmp;
}
var deltax:int = x1 - x0;//横距離を計算 ①で入れ替え計算しているので必ず正になる
var deltay:int = Math.abs(y1 - y0);//縦距離を計算して絶対値化
var error:int = deltax / 2;//x移動距離の半分?これを誤差とみなすのだろうか
var ystep:int = y0;
var y:int = y0;
if (y0 < y1) {
//正方向なら1
ystep = 1;
}else {
//負方向なら-1
ystep = -1;
}
for (var x:int = x0; x <= x1 ; x++) {
//xは必ず1ずつ動かす このために①でx0とx1を入れ替えてた あとはyのことだけ考慮すればよい
if (steep) {
//steepがtrueってことはxとyが入れ替えられている → 描画もyとxを入れ替える
//_canvas.setPixel32(y , x , color | ((alpha * 0xff) << 24)  );
_canvas.setPixel32(y , x ,  ((alpha * 0xff) << 24) | color   );
}else {
//_canvas.setPixel32(x , y , color | ( (alpha * 0xff << 24)  ) );
_canvas.setPixel32(x , y , ( (alpha * 0xff << 24) | color ) );
}
error = error - deltay; //x移動距離の半分(=誤差)からy移動距離(絶対値)を引く 誤差をためておく
if (error < 0) {
//yの増分がxの増分半分を超えたらyをひとつ移動させ、マイナスになってしまったエラーにまたx増分を足す。以降繰り返し
y = y + ystep;
error = error + deltax; //誤差に横全移動距離を足し、新たな判定基準にする
}
}
}
}
}

2011年7月11日月曜日

INFOBAR 謎の音が鳴る

アラームでもスケジュール通知でも無く。
2011.7.10 12:53 infobarが鳴るピピピピツ、ピピピピツ4連続×2回の電子音が鳴る。

原因不明。ネットでも二人ほどいるみたい。
auショップでも首をかしげるばかり。

ブレゼンハムの線分描画アルゴリズム

http://www5f.biglobe.ne.jp/~kenmo/program/SLG/bresenham/bresenham.html
の解説がわかりやすい。

Flash ライブラリ stats

メモリ使用状況などを表示するライブラリ。
wonderFLで左上に表示されているモノ。
元あった場所(http://code.google.com/p/mrdoob/wiki/stats)には既に無く、
http://code.google.com/p/mrdoob/source/browse/trunk/libs/net/hires/utils/?r=109からエディタに貼り付け作成。

2011年7月10日日曜日

Eメール受信したときの音量

着信音じゃなくて通知で変わる。少々紛らわしい。

メール再振り分け

受信メールと、作成したフォルダでのボタン押したときの内容が異なるから少しややこしい。
実際にその作成したフォルダに入ってからMENUボタン->フォルダ管理を押すと、項目が増えている。その中の一番下、再振り分けを実施する