2010年11月25日 星期四

flash 10 上傳圖檔有問題?

在上傳圖檔時出現了這個訊息


*** Security Sandbox Violation ***
連線至 http://192.168.1.38/tests/image_encode_upload/deploy/image.php?path=output/ 已終止 - http://192.168.1.38/tests/image_encode_upload/deploy/savetoServer.swf 不允許
SecurityError: Error #2176: 特定動作 (像是顯示彈出式視窗的動作) 只能透過使用者互動叫用,例如滑鼠按下或按下按鈕等等。
at flash.net::URLStream/load()
at flash.net::URLLoader/load()
at savetoServer/captureImage()[D:\design\project4\pnoView\v8.4\savetoServer.as:341]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at gs::TweenLite/render()[D:\design\project4\pnoView\v8.4\classes\gs\TweenLite.as:340]
at gs::TweenLite$/executeAll()

原來像 POST 的動作只能由使用者觸發

2010年11月8日 星期一

為何日本學校都不用PU、PP跑道

2010年7月27日 星期二

換算經緯轉成 X,Y,Z 將物件放置於球體的表面

換算經緯轉成 X,Y,Z  將物件放置於球體的表面





package {

import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.filters.*;

import away3d.core.base.*;
import away3d.core.math.*;
import away3d.containers.*;
import away3d.primitives.*;
import away3d.cameras.*;
import away3d.core.render.*;
import away3d.materials.*;
import away3d.core.utils.*;
import away3d.sprites.*;
import away3d.loaders.*;
import away3d.events.*;




public class SphereSatellite2 extends Sprite {

private static const ORBITAL_RADIUS:Number=150;
private static const CAMERA_ORBIT:Number=600;

private var cameraPitch:Number=60;
private var cameraYaw:Number=-60;

private var scene:Scene3D;
private var camera:Camera3D;
private var view:View3D;
private var group:ObjectContainer3D;

private var sphere:Sphere;
private var sphereA:Sphere;
private var sprite:Sprite3D;
private var swf:Swf;

private var spriteMaterial:BitmapMaterial;
private var materialBall:MovieMaterial;


[Embed(source="img/sirius.jpg")]
private var Star:Class;

[Embed(source="img/earthmask.png")] private var EarthMaskImage:Class;
     private var earthMask:Bitmap = new EarthMaskImage();

public function SphereSatellite2() {

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP;

init3D();
initMaterials();
createscene();
addEventListener(Event.ENTER_FRAME,loop);
stage.addEventListener(MouseEvent.MOUSE_WHEEL,mouseWheel);

}

private function init3D():void {
scene=new Scene3D  ;
camera=new Camera3D({zoom:25,focus:30});
setCameraPosition();
view=new View3D({scene:scene,camera:camera});
view.x=stage.stageWidth/2;
view.y=stage.stageHeight/2;
addChild(view);
}

function createscene():void {

//建立一個 View 如果一個視窗
//addChild(view=new View3D({x:400, y:100}));

//camera=new Camera3D({zoom:25,focus:30});

group = new ObjectContainer3D();
scene.addChild(group);

//建立一個球體
//sphere=new Sphere({material:new WireColorMaterial()});
//var wireframeMaterial:WireframeMaterial=new WireframeMaterial({wireColor:0x000000});

var earthMaskMaterial:BitmapMaterial = new BitmapMaterial(Cast.bitmap(earthMask));
sphere=new Sphere({material:earthMaskMaterial,radius:ORBITAL_RADIUS,segmentsW:10,segmentsH:10});
//sphere.smooth =true;
sphere.bothsides =true;
group.addChild(sphere);

var sphereMaterial:WireColorMaterial=new WireColorMaterial(0x5500FF,{wirecolor:0xFF9900});
sphereA=new Sphere({material:sphereMaterial,radius:5,segmentsW:10,segmentsH:10});
sphereA.x = ORBITAL_RADIUS;
//group.addChild(sphereA);

/*
sprite=new Sprite3D(null,5,5);
sprite.x=-ORBITAL_RADIUS;
sprite.scaling=0.005*100;
sprite.material=spriteMaterial;
//group.addSprite(sprite);


var swf = new Swf();
swf.libraryClips = ["fish"];
var fish = swf.parseGeometry(loaderInfo.bytes) as ObjectContainer3D;
fish.x = ORBITAL_RADIUS;
fish.rotationY = 90;
*/


var fish = new kk();
materialBall=new MovieMaterial(fish);
materialBall.smooth = true;



var ball;

for(var j=0; j<6; j++){

for(var i=0; i<36; i++){
ball = createPoint(ORBITAL_RADIUS+2, 10, j*10, i*10);
ball.addEventListener(MouseEvent3D.MOUSE_DOWN  , clickBall);
group.addChild(ball);
}

}



//將球體加入場景
scene.addChild(group);
}


function createPoint(radius, size, angleX, angleY){
var plane = new Plane({ width:size, height:size });
plane.material = materialBall;
//plane.x = radius;


plane.y = sinRadiusAngle2H(radius, angleX);

//以高度為基準,產生第二個半徑,做為 X,Y 的計算參考
var radius2 = cosRadiusAngle2W(radius, angleX);

//以第二半徑計算水平的座標
plane.z = sinRadiusAngle2H(radius2, angleY);
plane.x = cosRadiusAngle2W(radius2, angleY);


//修正平面對向以球心
plane.rotationZ = -90+angleX;
plane.rotationX = -angleY;


plane.bothsides = true;
return plane;
}

//斜邊,仰角 求水平距離
function cosRadiusAngle2W(radius:Number,angle:Number ){
 var w = radius*Math.cos(angle*Math.PI/180);
 return w;
}

//求高度  水平距離和仰角求高
function tanAW2H(angle, w ):Number{
var h=w*Math.tan(angle*Math.PI/180);
return h
}

//求高度  水平距離和仰角求高
function sinRadiusAngle2H(radius:Number, angle:Number  ):Number{
var h=radius*Math.sin(angle*Math.PI/180);
return h
}



function initMaterials():void {

var earthMaskMaterial:BitmapMaterial = new BitmapMaterial(Cast.bitmap(earthMask));
//earthMaskMaterial.showNormals = true;
earthMaskMaterial.smooth = true;

var star:BitmapData=Cast.bitmap(Star);
var transstar:BitmapData=new BitmapData(star.width,star.height,true);
transstar.applyFilter(star, star.rect, new Point(0,0), new ColorMatrixFilter([0, 0, 0, 0, 245, 0, 0, 0, 0, 245, 0, 0, 0, 0, 255, 0.3, 0.3, 0.3, 0, 0]));
spriteMaterial=new BitmapMaterial(transstar);


}

function clickBall(e:Event):void {
trace("clickBall");
}
function loop(event:Event):void {
var offset = 0.1;

view.camera.moveTo(sphere.x,sphere.y,sphere.z);

view.camera.rotationY=mouseX/2;
//view.camera.rotationX=-(mouseY/2);
view.camera.moveBackward(500);

group.rotationY+=  offset;

//trace(mouseX, mouseY);

view.render();
}

private function setCameraPosition():void {
camera.y=CAMERA_ORBIT*Math.cos(cameraPitch*Math.PI/180);
camera.x=CAMERA_ORBIT*Math.sin(cameraPitch*Math.PI/180)*Math.cos(cameraYaw*Math.PI/180);
camera.z=CAMERA_ORBIT*Math.sin(cameraPitch*Math.PI/180)*Math.sin(cameraYaw*Math.PI/180);
// keep the camera looking at the origin
camera.lookAt(new Number3D(0, 0, 0));
}

private function mouseWheel(e:MouseEvent):void {
//trace("mouseWheel", e.delta);
camera.fov-=e.delta;
setCameraPosition();

}

}// end class
}

以flash 實做三角函數 觀查角度與徑度的變化

以flash 實做三角函數 觀查角度與徑度的變化





\sin x = \frac {a}{c}
\cos x = \frac {b}{c}
\tan x = \frac {a}{b}

{rad}=\pi{\frac{deg}{180^{\circ}}}
常用的弧度轉換公式:
2\pi \leftrightarrow 360^{\circ}
\pi \leftrightarrow 180^{\circ}
\frac{\pi}{2} \leftrightarrow 90^{\circ}
\frac{\pi}{3} \leftrightarrow 60^{\circ}
\frac{\pi}{4} \leftrightarrow 45^{\circ}
\frac{\pi}{6} \leftrightarrow 30^{\circ}

2010年7月26日 星期一

HTC Desire 的雙向錄音功能的點殘缺

用一陣子,才想到要錄音的功能,所以在Market 找了兩三套來試,都有想同的問題,就是另一方通話的聲音太小了,在想不會那麼巧吧!,所以在網站爬了一下。原來問題在 Android 不知道Google 什麼會改善。

http://mortlemania.wordpress.com/2010/06/10/call-recording-crippled-on-android-fix-this-now-google/

http://code.google.com/p/android/issues/detail?id=2117#c180

Fly Mosquito 模擬像蚊子浮動的效果

Fly Mosquito 模擬像蚊子浮動的效果




//主程式


package {

import flash.display.*;
import flash.media.*;
import flash.events.*;

import webco.*;


public class MainTest extends Sprite {

public function MainTest() {

var num=5;
var msq;
var aMS= new Array();
for (var i=0; i<=num; i++) {

msq = new Mosquito();
msq.x=randomNumber(0,stage.stageWidth-50);
msq.y=randomNumber(0,stage.stageHeight-50);
//trace(msq);
addChild(msq);
msq.addEventListener(MouseEvent.CLICK ,onClick);

aMS.push(new MosquitoSimulator(msq));
trace(i);
}

var sound:Sound = new MosquitoSound();
sound.play();

}


function onClick(e:Event) {
var sound:Sound = new MosquitoSound();
sound.play();
}


function randomNumber(low:Number=NaN, high:Number=NaN):Number {
var low:Number=low;
var high:Number=high;

if (isNaN(low)) {
throw new Error("low must be defined");
}
if (isNaN(high)) {
throw new Error("high must be defined");
}

return Math.round(Math.random() * (high - low)) + low;
}

}

}




//模擬程式

package webco{

import flash.display.*;
import flash.events.*;
import flash.geom.Point;
import flash.media.*;


import caurina.transitions.Tweener;

public class MosquitoSimulator {

var initX;
var initY;
var dX=50;
var dY=50;
var simular:*;

public function MosquitoSimulator(obj:Sprite) {

this.simular=obj;

initX=simular.x;
initY=simular.y;

this.simular.addEventListener(MouseEvent.MOUSE_OVER,onOver);
this.simular.addEventListener(MouseEvent.MOUSE_OUT,onOut);

setFloat();

}

function onOver(e:Event) {
   var clickPoint:Point = new Point(simular.mouseX, simular.mouseY);
clickPoint = simular.localToGlobal(clickPoint)
simular.buttonMode = true;

var nx =  clickPoint.x-simular.width/2;
var ny =  clickPoint.y-simular.height/2;
Tweener.removeTweens(this.simular);
Tweener.addTween(this.simular, {x:nx, y:ny, delay:0, time:0.5, transition:"easeInOutQuart"} );

}

function onOut(e:Event) {
setFloat();
}

function setFloat() {
var nx=randomNumber(initX,initX-dX);
var ny=randomNumber(initY,initY-dY);
var delay =randomNumber(0,2);
//trace("setFloat",nx, ny);
Tweener.addTween(this.simular, {x:nx, y:ny, delay:delay, time:2, transition:"easeInOutQuart",onComplete:setFloatHandle} );

}

function setFloatHandle() {
//var nx=randomNumber(initX,);
//var ny=randomNumber(3,7);
//trace("setFloatHandle",initX, initY);
Tweener.addTween(this.simular, {x:initX, y:initY, time:1, delay:0, transition:"easeInOutQuart", onComplete:setFloat} );
}

function randomNumber(low:Number=NaN, high:Number=NaN):Number {
var low:Number=low;
var high:Number=high;

if (isNaN(low)) {
throw new Error("low must be defined");
}
if (isNaN(high)) {
throw new Error("high must be defined");
}

//return Math.round(Math.random() * (high - low)) + low;

return (Math.random() * (high - low)) + low;
}


}// end class


}



下載

http://tmp.webco.tw/flash/mosquito/mosquito.swf