public class Learn extends Music{ public function Learn(){ design(); seo(); rock(); snowboarding(); skateboarding(); movie(); if(me==happy){ everyone == happy; }else if(me==sad){ drink++; } } }

たまに見かけるパーティクル

Posted: 4月 28th, 2011 | Author: yoheim | Filed under: flash | No Comments »

たまにサイトで花びらのパーティクルとかで使っている表現
を作ってみました。
クリックしてみてください。
風に吹かれて消えてく花びらみたいな感じにしてみたく作ってみました。

This movie requires Flash Player 9


以下ソースです。
【ドキュメントクラス】
「Index.as」
package
{
import com.greensock.TweenMax;
import com.greensock.easing.*;

import flash.display.Sprite;
import flash.display.Shape;
import flash.events.Event;
import flash.events.MouseEvent;

import utils.CreateParticles;

public class Index extends Sprite
{
private var _stageSp:Sprite;
private var _stageBg:Shape;
private var _stageMask:Shape;
private var _createParticle:CreateParticles;

public function Index()
{
if(stage){
init();
}else{
addEventListener(Event.ADDED_TO_STAGE,init);
}
}

private function init(e:Event=null):void{
_stageBg=new Shape();
_stageBg.graphics.beginFill(0×000000);
_stageBg.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
_stageBg.graphics.endFill();
this.addChild(_stageBg);


_stageSp=new Sprite();
_stageSp.graphics.beginFill(0xffffff,1.0);
_stageSp.graphics.drawRect(1,1,stage.stageWidth-2,stage.stageHeight-2);
this.addChild(_stageSp);

_stageSp.buttonMode=true;
_stageSp.addEventListener(MouseEvent.CLICK,onClickEvent_Handler);

_stageMask=new Shape();
_stageMask.graphics.beginFill(0×000000);
_stageMask.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
_stageMask.graphics.endFill();
this.addChild(_stageMask);

this.mask=_stageMask;


}

private function onClickEvent_Handler(e:MouseEvent):void{
_createParticle=new CreateParticles(mouseX,mouseY);
addChild(_createParticle);
TweenMax.to(_createParticle,2.0,{alpha:0.0,ease:Sine.easeIn,onComplete:deleteParticle,onCompleteParams:[_createParticle]});
}

private function deleteParticle(particle:CreateParticles):void{
removeChild(particle);
}
}
}

【パーティクル生成クラス】※utilsというパッケージです。
「CreateParticles.as」
package utils
{

import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;

import utils.Particle;

public class CreateParticles extends Sprite
{
private var _posX:Number;
private var _posY:Number;

private var _particle:Particle;
private var _deleteParticle:Particle;
private var _particleArr:Array=[];

private var _timer:Timer;

private static const PARTICLE_NUM:uint=20;

public function CreateParticles(posX:Number,posY:Number)
{
super();
_posX=posX;
_posY=posY;

init();

}

private function init():void{

_timer=new Timer(100,PARTICLE_NUM);
_timer.addEventListener(TimerEvent.TIMER,onTimerEvent_Handler);
_timer.addEventListener(TimerEvent.TIMER_COMPLETE,onTimerComplete_Handler);
_timer.start();

}

private function onTimerEvent_Handler(e:TimerEvent):void{
_particle=new Particle(Math.random()*0xffffff,_posX,_posY);
addChild(_particle);
}

private function onTimerComplete_Handler(e:TimerEvent):void{
_timer.removeEventListener(TimerEvent.TIMER,onTimerEvent_Handler);
}

}
}

【パーティクルの実態クラス】
Particle.as
package utils
{

import flash.display.Sprite;
import flash.events.Event;

public class Particle extends Sprite
{

private var _randomNum:Number;
private var _distNum:Number;

private var _color:uint;
private var _posX:Number;
private var _posY:Number;
private var _wind:Number=0.8;
private var _gravity:Number=0.2;

private var _speed:Number;

private static const PARTICLE_SIZE:uint=10;

public function Particle(color:uint,posX:Number,posY:Number)
{
super();

_color=color;
_posX=posX;
_posY=posY;

if(stage){
init();
}else{
this.addEventListener(Event.ADDED_TO_STAGE,init);
}
}

private function init(e:Event=null):void{
_randomNum=Math.round(Math.random()*1)*2-1;
_distNum=(Math.random()*30)+20;

_speed=(Math.floor(Math.random()*8))*_randomNum;

this.graphics.beginFill(_color,Math.random());
this.graphics.drawCircle(_posX,_posY,PARTICLE_SIZE);
this.graphics.endFill();
this.addEventListener(Event.ENTER_FRAME,onEnterFrameEvent_Handler);

}

private function onEnterFrameEvent_Handler(e:Event):void{
_speed+=_wind;
this.x+=_speed;
this.y+=25*_gravity;
}

}
}


3D

Posted: 4月 21st, 2011 | Author: yoheim | Filed under: flash | No Comments »

3Dを試してみました。
adobeTV を参考にしました。
マウスが動いてる間だけ「Ahhhhhh」です。
http://tv.adobe.com/jp/search/?q=actionscript

This movie requires Flash Player 9


外部SWFによる埋め込みフォント

Posted: 1月 26th, 2011 | Author: yoheim | Filed under: flash | No Comments »

今日、外部swfによる埋め込みフォントを実装することがあったんですが、
いまいち、どういった感じで動いているのかが分からなかったので、
自宅で練習してみました。

This movie requires Flash Player 9

ソースです。

package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.net.LocalConnection;
import flash.events.Event;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;
import flash.text.*;

//——————————————————
//Kozuka とリンケージしたフォントを持つfonts.swf がある。
//——————————————————


public class Main extends Sprite{

private var _urlReq:URLRequest;
private var _loader:Loader;
private var _context:LoaderContext;
private var _fontSwf:String = “fonts.swf”;


public function Main() {
// constructor code
if(new LocalConnection().domain != “localhost”){
_fontSwf = “http://blog.everpine.info/as/”+_fontSwf;
}

init();
}

private function init():void{

_context = new LoaderContext();
_context.applicationDomain = ApplicationDomain.currentDomain;//フォントswfのロード先ApplicationDomainを指定

_urlReq = new URLRequest(_fontSwf);
_loader = new Loader();
_loader.load(_urlReq,_context);
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadCompleteEvent_Handler);

}

private function onLoadCompleteEvent_Handler(e:Event):void{
var Kozuka:Class = ApplicationDomain.currentDomain.getDefinition(”Kozuka”) as Class;//ApplicationDomainからクラス参照
Font.registerFont(Kozuka);//フォントクラスをフォントリストへ登録

var txt:TextField = new TextField();
var tf:TextFormat = new TextFormat();
var fonts:Font = new Kozuka();

tf.font = fonts.fontName;
tf.size = 15;

txt.defaultTextFormat = tf;

txt.embedFonts = true;
txt.height = 100;
txt.width = 400;
txt.x = 10;
txt.y = 10;
txt.text = “あいうえお。フォントの埋め込み”;

addChild(txt);


}

}

}

上記ソースにある、ApplicationDomain.currentDomainを使って別swfのリンケージ
にアクセスできるということを確かめてみるべく
パブリッシュするメインのflaではなく別のflaの中にリンケージしたMovieClipを
同じ要領で呼んでみました。
This movie requires Flash Player 9

でました。
ソースです。
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.net.LocalConnection;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;


//—————————————————–
//other.fla の中にリンケージ名 CubeというMCがある。
//—————————————————–


public class Main extends Sprite{

private var _other:String = “other.swf”;

public function Main() {
// constructor code
trace(”main”)
if(new LocalConnection().domain != “localhost”){
_other = “http://blog.everpine.info/as/other.swf”;
}
init();
}

private function init():void{

var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;

var urlReq:URLRequest = new URLRequest(_other);
var loader:Loader = new Loader();
loader.load(urlReq,context);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadedSwf_Handler);

}

private function onLoadedSwf_Handler(e:Event):void{

var cube:Class = ApplicationDomain.currentDomain.getDefinition(”Cube”) as Class;
var mc:MovieClip = new cube();
mc.x = stage.stageWidth/2;
mc.y = stage.stageHeight/2;
addChild(mc);

}

}

}

ふむふむといった感じです。


よく使うもの。

Posted: 1月 20th, 2011 | Author: yoheim | Filed under: flash | No Comments »

ASを書いていてよく使うものを残しておこうと思います。
正直、書き方とか間違ってる可能性もあります。
もし、気づいたことなどありましたら、ご指摘頂けたら幸いです。
色々あるんですが、
まずは、シングルトンパターン。
僕はいつも下記のように記述します。

//——SingleTon Pattern Class

package{

public class SingleTon{

private static var _instance:SingleTon = new SingleTon();

public function SingleTon(){

if(_instance){

throw new ArgumentError(”this is singleTon.”)

};

}



public function hoge():void{

trace(”HOGE”)

}



public static function get instance():SingleTon{

return _instance;

}

}

}

//—— 使う側

package{

import flash.display.Sprite;

public class Main extends Sprite{

private var _singleTon:SingleTon;

public function Main(){

init();

}

private function init():void{

_singleTon = SingleTon.instance;

_singleTon.hoge();

///—–”HOGE” と出力

}

}

}

これを使うと色々な場面で便利です。

続いてXMLのパスがサーバーにあげるとき変わるとかの時によく使うのが

localConnectionです。僕は下記のように記述します。

“localhost”が返ってきたら通常通り。みたいな感じです。

package{

import flash.net.URLRequest;

import flash.net.URLLoader;

import flash.net.LocalConnection;

public class xmlLoader{



private var _xmlURL:String =”xml/load.xml”;

private var _urlReq:URLRequest;

private var _urlLoader:URLLoader;



public funciton xmlLoader(){



if(new LocalConnection.domain != “localhost”){

//—サーバー上でXMLへのパスが変更になった場合ココに記述

//_xmlURL = “http://www.hoge.com/hoge/”+_xmlURL;

}



init();



}



private function init():void{



//——xml処理など

}



}

}

ほかにもよく使ってるけど、ちょいちょい忘れてしまうようなものなどを

メモ代わりに書いていきたいと思います。

あ、でもこのコードを書いたときのこの変なインデントを直せないと見ていてキモいんでまずそこを直します。


コンソール風 flash

Posted: 1月 19th, 2011 | Author: yoheim | Filed under: flash | No Comments »

あと、コンソール風のflashを作ってみました。

自分のサイトを作り直そうと思ってて思いついたものの一つです。

これを拡張していこうかなとも思ってます。

This movie requires Flash Player 9


久々に更新。

Posted: 12月 15th, 2010 | Author: yoheim | Filed under: flash | No Comments »

画像関連の練習をしようしようと思っていながらなかなかやっていなかxったので、
第一弾として、
画像をぐにゃぐにゃにしてみます。
スペースキーでポイントが隠れたり見えたり。

This movie requires Flash Player 9


眠いです

Posted: 11月 11th, 2010 | Author: yoheim | Filed under: flash | No Comments »

眠いので、
コードはやっつけ気味ですが、こんなイントロかっこいいなーといいなーと。
イメージと少し違いますが、ひとまず。

This movie requires Flash Player 9


package{
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.filters.BlurFilter;
import flash.filters.GlowFilter;
import flash.filters.BitmapFilterQuality;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import caurina.transitions.Tweener;
import caurina.transitions.properties.ColorShortcuts;
import caurina.transitions.properties.DisplayShortcuts;
import caurina.transitions.properties.FilterShortcuts;

public class Main extends MovieClip{

public var uglyPeople:MovieClip;
public var detailTxt:MovieClip;

private var btn:startBtn;

private var blur:BlurFilter;
private var glow:GlowFilter;

private var flag:Boolean = true;

private var count:int = 0;

public function Main() {
ColorShortcuts.init();
DisplayShortcuts.init();
FilterShortcuts.init();
init();

}

private function init():void{

clearAll();
}

private function onClickEvent_Handler(e:MouseEvent):void{
e.target.removeEventListener(MouseEvent.CLICK,onClickEvent_Handler);
removeChild(e.target as MovieClip);
flag = false;
beginAll();

}

private function clearAll(){

uglyPeople.alpha = 0;

blur = new BlurFilter();
blur.blurX = blur.blurY = 15;

glow = new GlowFilter();
glow.color = 0xffffff;
glow.blurX = 10;
glow.blurY = 10;
glow.quality = BitmapFilterQuality.MEDIUM;

uglyPeople.filters = [glow,blur];
for(var i:int = 0;i detailTxt["t"+i].alpha = 0;
detailTxt["t"+i].filters = [glow,blur];

}

btn = new startBtn();
btn.x = stage.stageWidth/2 – btn.width/2;
btn.y = stage.stageHeight/2 – btn.height/2;
btn.buttonMode = true;
addChild(btn);

btn.addEventListener(MouseEvent.CLICK,onClickEvent_Handler);
}

private function beginAll(){
startAnimation(uglyPeople,1,0,”easeInQuad”);


for(var k:int = 0;k
startTxtAnimation(detailTxt["t"+k],1,Math.random()+2,”easeInQuad”,completeFunction);

}
}

private function completeFunction():void{
count++;
if(count == detailTxt.numChildren){
count = 0;
var timer:Timer = new Timer(2500,1);
timer.addEventListener(TimerEvent.TIMER,onTimerEvent_Handler);
timer.start();
}
}

private function onTimerEvent_Handler(e:TimerEvent):void{
clearAll();
}


private function startAnimation(mc:MovieClip,timeNum:Number,delayNum:Number,trans:String,compFunc:Function = null):void{
Tweener.addTween(mc,{_autoAlpha:1,time:timeNum,delay:delayNum,transition:trans,onComplete:function(){
Tweener.addTween(mc,{_Blur_blurX:0,_Blur_blurY:0,_Glow_blurX:0,_Glow_blurY:0,time:timeNum,delay:delayNum+0.5,transition:trans,onComplete:compFunc});
}});

}

private function startTxtAnimation(mc:MovieClip,timeNum:Number,delayNum:Number,trans:String,compFunc:Function = null):void{
Tweener.addTween(mc,{_autoAlpha:1,time:timeNum,delay:delayNum,transition:trans});
Tweener.addTween(mc,{_Blur_blurX:0,_Blur_blurY:0,_Glow_blurX:0,_Glow_blurY:0,time:timeNum,delay:delayNum+0.5,transition:trans,onComplete:compFunc});

}

}

}


30分だけでも。

Posted: 10月 5th, 2010 | Author: yoheim | Filed under: flash | No Comments »

という気持ちで作りました
ソースはまんまなんで控えます。
ここ最近やっているバネ運動を応用したらできるといった感じです。
あまり深く理解していないので、明日の通勤電車の中ででももう一度考えてみます。

This movie requires Flash Player 9


ヨーヨー

Posted: 9月 27th, 2010 | Author: yoheim | Filed under: flash | No Comments »

ヨーヨー。

This movie requires Flash Player 9


バネ運動

Posted: 9月 27th, 2010 | Author: yoheim | Filed under: flash | No Comments »

マウスに着いてくるサイトにあったらちょっとウザいのと、
バネ運動をやってみました。
両方ともball_mcというMovieClipをステージに置いてます。

This movie requires Flash Player 9

package {
import flash.display.MovieClip;
import flash.events.*;

public class Main extends MovieClip {
public var ball_mc:MovieClip;

private var targetX:Number = stage.stageWidth/2;
private var targetY:Number = stage.stageHeight/2;
private var dx:Number;
private var dy:Number;
private var vx:Number;
private var vy:Number;
private var easing:Number = 0.2;
private var targetA:uint = 1;

public function Main() {
// constructor code

ball_mc.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownEvent_Handler);
addEventListener(Event.ENTER_FRAME,onEnterFrame_Handler);

}

private function onMouseDownEvent_Handler(e:MouseEvent):void{
ball_mc.startDrag();
removeEventListener(Event.ENTER_FRAME,onEnterFrame_Handler);
stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUpEvent_Handler);
}
private function onMouseUpEvent_Handler(e:MouseEvent):void{
ball_mc.stopDrag();
addEventListener(Event.ENTER_FRAME,onEnterFrame_Handler);
stage.removeEventListener(MouseEvent.MOUSE_UP,onMouseUpEvent_Handler);
}

private function onEnterFrame_Handler(e:Event):void{

dx = mouseX – ball_mc.x;
dy = mouseY – ball_mc.y;
vx = dx * easing;
vy = dy * easing;
ball_mc.x += vx;
ball_mc.y += vy;


}

}

}



This movie requires Flash Player 9


package {
import flash.display.MovieClip;
import flash.events.*;

public class Bane extends MovieClip{
public var ball_mc:MovieClip;
public var button_btn:MovieClip;

private var targetX:Number = stage.stageWidth/2;
private var spring:Number = 0.5;
private var friction:Number = 0.95;
private var ax:Number;
private var vx:Number = 0;
private var dx:Number;

public function Bane() {
// constructor code
button_btn.buttonMode = true;
button_btn.addEventListener(MouseEvent.CLICK,onClickEvent_Handler);


}

private function onClickEvent_Handler(e:MouseEvent):void{
button_btn.visible = false;
button_btn.removeEventListener(MouseEvent.CLICK,onClickEvent_Handler);
addEventListener(Event.ENTER_FRAME,onEnterFrameEvent_Handler);
}

private function onEnterFrameEvent_Handler(e:Event):void{
dx = targetX – ball_mc.x;
ax = dx * spring;
vx += ax;
vx *= friction;
ball_mc.x += vx;

if(Math.abs(dx)<0.1){
removeEventListener(Event.ENTER_FRAME,onEnterFrameEvent_Handler);
ball_mc.x = targetX;
}
}

}

}