memo 011 chumby my first widget "Hello World"
FlashLite3.0に対応していたり、(実際にはFlash8以前であれば動作可)
加速度センサーを内蔵していたり、と勉強にはもってこいということで
先日、chumbyを購入しました。手乗りサイズのかわいい子です。
練習1. chumbyにHelloWorldしましょう
Chumby Japan の『オリジナルウィジェット作成 その1』を参考にして
私もHelloWorldしました。
アクションスクリプトお姉さんを目指して日々奮闘するブログ : 3回更新出来たら大好きなケーキ1個食っていいことにする。
2008年6月24日
2008年1月12日

Capabilitiesクラスを使用すると、開発者はSWFファイルの実行環境に関する情報を取得できます。Capabilities クラスのさまざまなプロパティにより、ユーザーのシステムにおける画面解像度、
アクセシビリティソフトウェアに対するサポートの有無、ユーザーのオペレーティングシステムの言語、
および、現在インストールされている Flash Player のバージョンを知ることができます。
this.stage.nativeWindow.x=Capabilities.screenResolutionX /2-100;
this.stage.nativeWindow.y=Capabilities.screenResolutionY /2 -50;
package {
// インポート宣言
// ステージの設定関係
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import flash.events.*;
import flash.display.NativeWindow;
import flash.display.NativeWindowType;
import flash.display.NativeWindowInitOptions;
import flash.display.NativeWindowSystemChrome;
import flash.system.Capabilities;
public class DensukeSampo extends Sprite {
// Doggieクラスにはでんすけの動きの制御に関して記述しています。
// 実際のでんすけのMovieClipはDensukeSampo.flaのライブラリ内にあります。
private var wanwan:Doggie;
private var newWin:NativeWindow;
// 起動時に表示されるウィンドウの設定、GOボタンをリスナー登録する
public function DensukeSampo() {
this.stage.nativeWindow.x=Capabilities.screenResolutionX /2-100;
this.stage.nativeWindow.y=Capabilities.screenResolutionY /2 -50;
bt.addEventListener(MouseEvent.CLICK,createWindow);
}
// GOボタンをクリックすると新規ウィンドウ(でんすけのみの描画)を開く
private function createWindow(e:MouseEvent):void {
var options:NativeWindowInitOptions=new NativeWindowInitOptions;
options.systemChrome=NativeWindowSystemChrome.NONE;
options.type=NativeWindowType.LIGHTWEIGHT;
options.transparent=true;
newWin=new NativeWindow(options);
newWin.width=240;
newWin.height=210;
newWin.title="でんすけ";
newWin.visible=true;
newWin.stage.scaleMode=StageScaleMode.NO_SCALE;
newWin.stage.align = StageAlign.TOP_LEFT;
wanwan=new Doggie();
newWin.stage.addChild(wanwan);
newWin.stage.nativeWindow.x=Capabilities.screenResolutionX /2-100;
newWin.stage.nativeWindow.y=Capabilities.screenResolutionY /2 -50;
newWin.stage.nativeWindow.alwaysInFront=true;
// でんすけの新規ウィンドウを開くと同時に、起動時のウィンドウは閉じることにしました。
stage.nativeWindow.close();
}
}
}
package {
// インポート宣言
import flash.display.MovieClip;
import flash.events.*;
import flash.events.MouseEvent;
// でんすけの動き
public class Doggie extends MovieClip {
public function Doggie():void {
this.stop();
menu.buttonMode=true;
bark_btn.buttonMode=true;
// でんすけの足元のボタンをクリックでウィンドウを閉じる
menu.addEventListener(MouseEvent.CLICK,doExit);
// でんすけをドラッグする
bg.addEventListener(MouseEvent.MOUSE_DOWN,moveWindow);
// でんすけのドラッグを止める
bg.addEventListener(MouseEvent.MOUSE_UP,stopWindow);
// 顔をクリックするともぐもぐする
bark_btn.addEventListener(MouseEvent.CLICK,doBark);
}
// でんすけの具体的な動き:でんすけMovieClipのフレーム指定で動きを設定
private function moveWindow(e:MouseEvent):void {
this.stage.nativeWindow.startMove();
this.doWaking();
}
private function stopWindow(e:MouseEvent):void {
this.doShippo();
}
private function doBark(e:MouseEvent):void {
this.gotoAndStop(3);
}
private function doShippo() {
this.gotoAndStop(1);
}
private function doWaking() {
this.gotoAndStop(2);
}
private function doExit(e:Event) {
this.stage.nativeWindow.close();
}
}
}
2007年12月17日

densuke_mc.addEventListener(MouseEvent.MOUSE_DOWN, windowMove);
function windowMove(e:MouseEvent):void {
newWindow.startMove();
}
densuke_mc.buttonMode = true;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
bt1.addEventListener(MouseEvent.CLICK,openNewWindow);
bt2.addEventListener(MouseEvent.CLICK, closeNewWindow);
var newWindow:NativeWindow;
var densuke_mc:Densuke;
function openNewWindow(e:MouseEvent):void {
var wOption:NativeWindowInitOptions = new NativeWindowInitOptions();
//normal, lightweight, utility :タスクバー表示、表示なし、ツールパレット
wOption.type = NativeWindowType.NORMAL;
//none, standard, custom :ウィンドウクロームなし、OS特有のクローム
wOption.systemChrome=NativeWindowSystemChrome.NONE;
//背景を透過させる
wOption.transparent = true;
newWindow = new NativeWindow(wOption);
newWindow.width = 500;
newWindow.height = 388;
newWindow.title = "hogehoge";
newWindow.visible=true;
//リサイズしないようにする、XYの0,0が左上にある
newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
newWindow.stage.align = StageAlign.TOP_LEFT;
densuke_mc = new Densuke();
newWindow.stage.addChild(densuke_mc);
// でんすけの描画範囲内では指カーソルにする。
densuke_mc.buttonMode = true;
//でんすけの描画範囲内でドラッグするとそのままnewWindowをドラッグで移動させる
densuke_mc.addEventListener(MouseEvent.MOUSE_DOWN, windowMove);
}
function closeNewWindow(e:MouseEvent):void {
newWindow.close();
}
function windowMove(e:MouseEvent):void {
newWindow.startMove();
}
2007年12月16日

var circle:Sprite = new Sprite();
circle.graphics.beginFill (0xFFCC00);
circle.graphics.drawCircle (140, 200, 50);
var densuke_mc:Densuke = new Densuke();
newWindow.stage.addChild (circle);
newWindow.stage.addChild(densuke_mc);
newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
import flash.display.StageScaleMode;
newWindow.stage.align = StageAlign.TOP_LEFT;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
bt1.addEventListener(MouseEvent.CLICK,openNewWindow);
bt2.addEventListener(MouseEvent.CLICK, closeNewWindow);
var newWindow:NativeWindow;
var circle:Sprite;
var densuke_mc:Densuke;
function openNewWindow(e:MouseEvent):void {
var wOption:NativeWindowInitOptions = new NativeWindowInitOptions();
//normal, lightweight, utility :タスクバー表示、表示なし、ツールパレット
wOption.type = NativeWindowType.NORMAL;
//none, standard, custom :ウィンドウクロームなし、OS特有のクローム
wOption.systemChrome=NativeWindowSystemChrome.NONE;
//背景を透過させる
wOption.transparent = true;
newWindow = new NativeWindow(wOption);
newWindow.width = 500;
newWindow.height = 388;
newWindow.title = "hogehoge";
newWindow.visible=true;
//リサイズしないようにする、XYの0,0が左上にある
newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
newWindow.stage.align = StageAlign.TOP_LEFT;
circle = new Sprite();
circle.graphics.beginFill (0xFFCC00);
circle.graphics.drawCircle (140, 200, 50);
newWindow.stage.addChild (circle);
densuke_mc = new Densuke();
newWindow.stage.addChild(densuke_mc);
}
function closeNewWindow(e:MouseEvent):void {
newWindow.close();
}
2007年12月13日




var wOption:NativeWindowInitOptions = new NativeWindowInitOptions();
var newWindow:NativeWindow = new NativeWindow(wOption);
[1] wOption.type = NativeWindowType.NORMAL;
[2] wOption.systemChrome=NativeWindowSystemChrome.STANDARD;
// 新規ウィンドウを作成するボタン、作成したウィンドウを閉じるボタン
bt1.addEventListener(MouseEvent.CLICK,openNewWindow);
bt2.addEventListener(MouseEvent.CLICK, closeNewWindow);
var newWindow:NativeWindow;
// 新規ウィンドウの作成
// NativeWindowInitOptions型のオブジェクトに対して新規ウィンドウの設定を持たせて// NativeWindow型のオブジェクト(newWindow)をnewする際の引数とする。
function openNewWindow(e:MouseEvent):void {
var wOption:NativeWindowInitOptions = new NativeWindowInitOptions();
//タスクバー表示
wOption.type = NativeWindowType.NORMAL;
//OS特有のクローム
wOption.systemChrome=NativeWindowSystemChrome.STANDARD;
newWindow = new NativeWindow(wOption);
newWindow.width = 200;
newWindow.height = 100;
newWindow.title = "hogehoge";
newWindow.visible=true;
}
// 新規ウィンドウを閉じる
function closeNewWindow(e:MouseEvent):void {
newWindow.close();
}
2007年11月28日

2007年11月20日



var materialOyaji :MovieAssetMaterial = new MovieAssetMaterial( "oyaji2",true,null );
MovieAssetMaterial(id:※, transparent:Boolean = false, initObject:Object = null)
■ id:MovieClip ライブラリid
■ transparent:trueは透過、falseは透過なし(デフォルトではfalseに設定されています)
■ initObject:色、アルファ、線などを設定出来ます。
materialOyaji.animated =true;
Cylinder(material:MaterialObject3D = null, radius:Number = 100, height:Number = 100, segmentsW:int = 8, segmentsH:int = 6, topRadius:Number = 0, initObject:Object = null)
■ material:
■ radius:底面の半径
■ height:高さ
■ segmentsW:円の分割数
■ segmentsH:高さの分割数
■ topRadius:上面の半径
■ initObject:色、アルファ、線などを設定出来ます。
package
{
import flash.display.*;
import flash.events.*;
// Import Papervision3D
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
public class main extends Sprite
{
// ______________________________________________ vars3D
var container :Sprite;
var scene :Scene3D;
var camera :Camera3D;
var wall3D :Cylinder;
var oyaji :Plane;
// ______________________________________________ main
function main()
{
init3D();
// onEnterFrame
this.addEventListener( Event.ENTER_FRAME, loop3D );
}
// ______________________________________________ init3D
function init3D():void
{
// Sprite型のcontainerを作成しステージに配置します。
container = new Sprite();
addChild( container );
container.x = 280;
container.y = 200;
// sceneを作成
scene = new Scene3D( container );
// cameraを作成
camera = new Camera3D();
// おやじを配置
addOyaji();
// 背景を配置
addSpace();
}
// ______________________________________________ loop
function addOyaji():void
{
// OyajiWalking.flaライブラリ内のMovieClipでおやじテキスチャ作ります。
// MovieClipを使用するので、BitmapAssetMaterialではなく、MovieAssetMaterialです。
// 第二引数をtrueにすると描画されている部分以外を透過にします。
var materialOyaji :MovieAssetMaterial = new MovieAssetMaterial( "oyaji2",true,null );
// MovieAssetMaterialインスタンスのプロパティanimatedをtrueにし、アニメーションを再生させます。
materialOyaji.animated =true;
// おやじをロードします。おやじは平面に貼り付けるのでPlane型です。
oyaji = new Plane( materialOyaji, 500, 900, 8, 8);
// おやじの配置を設定します。
oyaji.rotationX = 0;
oyaji.y= -450;
oyaji.z=-200;
// おやじをsceneに配置します。
scene.addChild( oyaji );
}
// ______________________________________________ loop
function addSpace():void
{
// OyajiWalking.flaライブラリ内のMovieClipで背景テキスチャ作ります。
var materialSpace :MovieAssetMaterial = new MovieAssetMaterial( "wall",true,null);
// 背景をロードします。背景は円柱に貼り付けるのでCylinder型です。
wall3D = new Cylinder( materialSpace,3000,2000,100,6,0,null);
// 背景の位置を設定します。
wall3D.z = 3100;
// 背景をsceneに配置します。
scene.addChild( wall3D );
}
// ______________________________________________ loop
function loop3D(event:Event):void
{
//カメラの移動範囲の指定
camera.x = -container.mouseX*3;
camera.y = container.mouseY*4;
// 背景を回転させます。
wall3D.yaw( -2);
// Render the scene
scene.renderCamera( camera );
}
}
}
2007年11月19日

package
{
import flash.display.*;
import flash.events.*;
// Import Papervision3D
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
public class main extends Sprite
{
// ___________________________________________ vars3D
var container :Sprite;
var scene :Scene3D;
var camera :Camera3D;
var sphere :Ase; //3Dモデリングされた球体
// ____________________________________________ main
function main()
{
init3D();
// onEnterFrame
this.addEventListener( Event.ENTER_FRAME, loop3D );
}
// ____________________________________________ init3D
function init3D():void
{
// Create container sprite and center it in the stage
container = new Sprite();
addChild( container );
container.x = 320;
container.y = 240;
// Create scene
scene = new Scene3D( container );
// Create camera
camera = new Camera3D();
// Add Earth sphere
addEarth();
// Add space plane
addSpace();
}
// _____________________________________________ loop
function addEarth():void
{
//惑星に貼り付けるBitmap画像(flaファイル・ライブラリ内)を引数に入れる
var materialEarth :BitmapAssetMaterial = new BitmapAssetMaterial( "Earth" );
//惑星のロード、第三引数は惑星の遠さ;数が1より小さいほど遠い
sphere = new Ase( materialEarth, "world.ase", 0.7);
//rotationXはX軸に対して回転
//yawはY軸に対して回転
//参照したサイト:http://blog.livedoor.jp/takaaki_bb/archives/50614075.html
sphere.rotationX = 0;
sphere.yaw( -30);
// Add to scene
scene.addChild( sphere );
}
// _____________________________________________ loop
function addSpace():void
{
//宇宙に貼り付けるBitmap画像(flaファイル・ライブラリ内)を引数に入れる
var materialSpace :BitmapAssetMaterial = new BitmapAssetMaterial( "Space" );
// 宇宙画像を貼り付けるPlane型のオブジェクトを作る;Planeは表示オブジェクト
//引数はそれぞれ横の長さ、縦の長さ、セグメント(ゆがみ?:小さい値ほどゆがむ)8が丁度良さそう
//参照したサイト:http://aquioux.blog48.fc2.com/blog-entry-177.html
//参照したサイト:http://aquioux.blog48.fc2.com/blog-entry-191.html
var plane:DisplayObject3D = new Plane( materialSpace, 6400, 4800, 8, 8);
// Position plane
plane.z = 500;
// Add to scene
scene.addChild( plane );
}
// ____________________________________________ loop
function loop3D(event:Event):void
{
// Move camera with the mouse
//カメラの移動範囲の指定
camera.x = -container.mouseX/4*4*6;
camera.y = container.mouseY/3*3*6;
// Rotate sphere around its own vertical axis
sphere.yaw( 0.2 );
// Render the scene
scene.renderCamera( camera );
}
}
}

2007年11月18日
//インスタンス名.addEventListener(条件, 処理);
firststep_mc.addEventListener(MouseEvent.CLICK, showText);
//メソッドの定義
//event_obj:MouseEvent → event_obj:Event にしても良い(MouseEvent より Event の方が偉い)
function showText(event_obj:MouseEvent):void {
trace("HelloWorld");
}