在上傳圖檔時出現了這個訊息
*** 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月25日 星期四
2010年11月8日 星期一
2010年8月8日 星期日
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
}
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
}
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
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
//主程式
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
訂閱:
文章 (Atom)
