Salve a tutti,
ho iniziato da pochissimo con Flash 8
e stavo sperimentando un tutorial sul controllo con la webcam del movimento,
praticamente una sfera va da sinistra a destra e desidererei che al movimento scomparisse,
con il manuale di ActionScript mi è parso questo il sistema migliore:
delete ball_mc
inserito *********
var root:MovieClip = this;
//
// 1. Get your webcam on the screen
//
var video_vobj:Video;
var cam:Camera = Camera.get();
video_vobj.attachVideo(cam);
//
// 2. the activityLevel property
//
this.onEnterFrame = function() {
var actLevel:Number = cam.activityLevel;
root.act_txt.text = "activity level = "+actLevel;
};
cam.onActivity = function(isActive:Boolean) {
};
//
// 3. The BitmapData class
//
import flash.display.BitmapData;
var screenS = new BitmapData(cam.width, cam.height);
snap1_btn.onRelease = function() {
screenS.draw(video_vobj);
root.attachBitmap(screenS, 1);
};
var videoX:Number = video_vobj._x;
var videoY:Number = video_vobj._y;
var videoW:Number = video_vobj._width;
var videoH:Number = video_vobj._height;
snap2_btn.onRelease = function() {
screenS.draw(video_vobj);
var holder:MovieClip = root.createEmptyMovieClip("holder", 1);
holder.attachBitmap(screenS, 1);
holder._x = videoX;
holder._y = videoY;
holder._width = videoW;
holder._height = videoH;
};
release_btn.onRelease = function() {
root.holder.removeMovieClip()
};
//
// 4. Hit detection : Setup
//
var speed:Number = 2;
function moveBall() {
ball_mc._x += speed;
if (ball_mc._x>(videoX+30+videoW)) {
ball_mc._x = videoX-30;
ball_mc._y = videoY+random(videoH-60)+30;
}
}
ball_mc.onEnterFrame = moveBall;
//
// 5. Hit detection
//
var sizeDif:Number = videoW/cam.width;
var now = new BitmapData(cam.width, cam.height);
var before = new BitmapData(cam.width, cam.height);
function hitDetect() {
var ballX:Number = (ball_mc._x-videoX)/sizeDif
var ballY:Number = (ball_mc._y-videoY)/sizeDif
now.draw(video_vobj)
var valNow:Number = (now.getPixel(ballX, ballY) >> 16 & 0xFF);
var valBefore:Number = (before.getPixel(ballX, ballY) >> 16 & 0xFF);
if (valNow>valBefore+30 || valNow<valBefore-30) {
************ delete ball_mc
//(trace "hit")
if (ball_mc._currentframe == 1)
ball_mc.gotoAndPlay(2)
}
before.draw(video_vobj)
}
var intervalID:Number = setInterval(hitDetect, 20);
ma non funziona,
qualcuno mi può aiutare a capire cosa sbaglio?
grazie