ASでコールバック的な処理の書き方

8月 17th, 2009

こんにちは、なかわけです。

先日仕事をしていて、自分で書きながらこんな書き方できるんだなーという思ったのでメモ。

MainのなかでSubのインスタンスを生成する際、引数としてMainのfunctionを与えると、SubインスタンスからMainのfunctionが実行できるというもの。
このサンプルのコードでは意味のない処理をしてますが、実際にはSubのアニメーション処理が終わったらMainの処理を実行するというようなFlashを作ってました。

Main.as

package{
	import flash.display.MovieClip;
	import Sub;

	public class Main extends MovieClip{

		public function Main(){
			var subObj:Sub = new Sub(result);
		}

		public function result(num:uint):void{
			trace('結果は' + num + 'でした');
		}
	}
}

Sub.as

package{
	import flash.display.MovieClip;

	public class Sub extends MovieClip{

		public function Sub(callback:Function){
			var resultNum:uint = Math.floor(Math.random()*100);
			callback(resultNum);
		}
	}
}

はたしてこういう書き方してよかったのだろうか・・・。

ASでJSONをエンコードしたりデコードしたり

8月 17th, 2009

こんにちは、なかわけです。

今日は久しぶりにFlashの話です。いつもの備忘録です。
as3corelibで提供されているJSONユーティリティを使います。

エンコードの場合、

package {
	import flash.display.Sprite;
	import com.adobe.serialization.json.JSON; 

	public class encodeJson extends Sprite {
		public function encodeJson():void {
			var encodedJson:String = JSON.encode({
				'name' : 'nakawake',
				'type'  : 'neko',
				'age'   : 3
			});
		}
	}
}

デコードの場合(ウェブから取得してきた場合)

package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.IOErrorEvent;
	
	import com.adobe.serialization.json.JSON; 

	public class decodeJson extends Sprite {
		public function PostAndLoad() {			
			var request:URLRequest = new URLRequest('./json.php');
			var loader:URLLoader = new URLLoader();
			loader.load(request);
			loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
			loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
		}

		//ロードが正常に完了したとき
		private function loaderCompleteHandler(event:Event):void {
			var json:Object = JSON.decode(loader.data); 
			trace(json['name']);
			trace(json['type']);
			trace(json['age']);
		}

		//ロードに失敗したときの処理
		private function errorHandler(event:IOErrorEvent):void {
			trace("失敗したー");
		}
	}
}

こんな感じ

EC-CUBEエラーチェックの項目

8月 4th, 2009

こんにちは、なかわけです。

今日もEC-CUBEの話。メモです。

class内のエラーチェックの項目について少し解説している記事があったので、メモ。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=3386&forum=2

SPTAB_CHECKの意味がわからなかったんだよね。

EC-CUBEメインページ内でカテゴリ検索できない

7月 29th, 2009

こんにちは、なかわけです。

今日もEC-CUBEの話。メモです。

タイトルの通り、メインページ内でカテゴリ検索ができないです(カテゴリのプルダウンが表示されない)。
調べてみたところ、やはりブロックの機能はブロック内でしか使えないようです。

参考:http://www.materializing.net/archives/2008/07/15012425.php

う~ん・・・。

EC-CUBEテンプレート設定の不具合

7月 23rd, 2009

こんにちは、なかわけです。

今日もまたEC-CUBEの話です。

テンプレート設定に関して不具合がある個所を確認しました。
通常、オリジナルのテンプレートを作ると、管理ページの「デザイン管理」>「テンプレート管理」にリストされます。以下のように。
(さらに…)

EC-CUBE帳票の種類を追加する

7月 23rd, 2009

こんにちは、なかわけです。

今日もEC-CUBEの話。帳票の種類を追加します。
残念なことに、帳票の機能はまだ未実装の箇所が多く、ダミーの部分が多いそうです。
参考:http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=3413&forum=11

今回紹介する方法はなかわけが独自に行った方法です。「発注書」という帳票を追加したいと思います。
(さらに…)

EC-CUBEシステムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。のエラーを表示する

7月 23rd, 2009

こんにちは、なかわけです。

EC-CUBEの不親切なエラー(?)に対して少しだけヒントが見つかる方法を発見しました。

管理ページの「システム設定」>「パラメータ設定」で、
DEBUG_MODEの項目をtrueにします。
(さらに…)

EC-CUBE CSV出力の高度な設定

7月 22nd, 2009

こんにちは、なかわけです。

今日もEC-CUBEの話(2回目)。

CSV出力の高度な設定を使って受注情報(dtb_order)に受注詳細情報(dtb_order_detail)を紐づけてCSVを取得いました。
(さらに…)

EC-CUBE商品登録CSV内に#(シャープ)が含まれるとエラー

7月 22nd, 2009

こんにちは、なかわけです。

今日もEC-CUBEの話。

商品登録の際、管理ページからは#を含むURLが登録できるのに商品登録CSVから登録すると、「メーカURLを正しく入力してください」というようなエラーが表示されてしまいます。

これは、EC-CUBEのURL_CHECKメソッドが甘い(逆に厳しいのか?)ため、ページ内アンカーの#nameをURLとしてみなしてないためです。対処法は以下のようにすればOKでした。
(さらに…)

GDグラフィックライブラリーの不具合について

7月 16th, 2009

こんにちは、なかわけです。

今日はGDの話。また仕事のメモです。
GDについてはウィキペディアなどで調べてください。

かなり特殊なケースですが、GDで扱う画像データの中に特定のバイナリが含まれていると処理が完了せず、エラーになります。

Corrupt JPEG data: 520 extraneous bytes before marker 0xd9

こんな感じのエラー。

調べてみたところ、あるバージョン以下ではGDのプログラムにバグがあるようです。
外人さんは自分で直してました。
参考:http://www-personal.umd.umich.edu/~dennismv/corruptjpeg.html

会社の提供しているサービスでは手で修正するにはリスクがあるので上記の方法は採りませんでした。
新しいバージョンではこのバグは修正されているようなのでアップグレードすれば直るようです。
(会社のサービスで使用してるサーバはそもそもApach(?)のバージョンが古かったせいでアップデートできなかったですけど)