krisred
asked on
flash AS3 question
I have the following code, I am trying to slow the scroll speed of the mouse event but I do not know where to change it.
Please help
Please help
import org.papervision3d.scenes.*;
import org.papervision3d.objects.*;
import org.papervision3d.cameras.*;
import org.papervision3d.materials.*;
import gs.*;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
stage.align = "TL";
stage.scaleMode = StageScaleMode.NO_SCALE;
import kudos.*;
// init
var w : Number = 150;
var h : Number = 220;
var d : Number = 25;
var n : Number = 3;
var pausing = false;
var defaultZoom : Number = 5;
var maxZoom : Number = 10;
var minZoom : Number = 1;
var glowColor : Number = 0xEAFD9B;
var popout : Number = 0.7;//0-1
var fitScreen : Boolean = true;
var xmlFile : String = "xml/picTail.xml";
var vFullscreen : Boolean = false;
//variables
var myLd: Loader;
var nPics: Number = 50;
var cPics: Number = 0;
var cp : *;
var pContainer : Dictionary = new Dictionary(true);
var mcloader : MovieAssetMaterial = new MovieAssetMaterial("loader", true);
var ploader:Plane = new Plane(mcloader, 25, 25, 1, 1);
var info: info_mc = new info_mc();
info.visible = true;
info.y = stage.stageHeight;
info.des_txt.autoSize = TextFieldAutoSize.LEFT;
info.des_txt.multiline = true;
info.des_txt.wordWrap = true;
var tz: Number = defaultZoom;
addEventListener(Event.ENTER_FRAME, rotLoader);
// Create the container Sprite
var container:Sprite = new Sprite();
container.x = stage.stageWidth * 0.5;
container.y = stage.stageHeight * 0.5;
addChild(container);
var ld: URLLoader = new URLLoader();
ld.addEventListener(Event.COMPLETE, init);
ld.load(new URLRequest(LoaderInfo(root.loaderInfo).parameters.xmlFile));
var xml: XML;
function init(evt: Event){
try {
xml = new XML(ld.data);
loadImg(xml.item[cPics].@link);
nPics = xml.item.length();
n = xml.@row;
} catch (e: Error){
}
}
// Setup the 3D scene
var scene:MovieScene3D = new MovieScene3D(container);
var camera:FreeCamera3D = new FreeCamera3D();
camera.z = -stage.stageHeight*4/3;
camera.y = -(h*n+d*(n-1))/2+120;
camera.extra = {
x: 100, ry : 100, y: -(h*n+d*(n-1))/2+120, cz: camera.z
}
stage.addEventListener(MouseEvent.MOUSE_WHEEL, zoomCamera);
stage.addEventListener(Event.ENTER_FRAME, render);
stage.addEventListener(Event.RESIZE, update);
stage.displayState = (vFullscreen) ? "fullScreen" : "normal";
var clickArea : Sprite = drawRect(100,100);
clickArea.addEventListener(MouseEvent.CLICK, getlink);
clickArea.buttonMode = true;
var closeBtn : close_btn = new close_btn();
closeBtn.addEventListener(MouseEvent.CLICK, clkClose);
closeBtn.buttonMode = true;
function update(...rest){
TweenMax.to(container,0.25,{x: stage.stageWidth * 0.5, y:stage.stageHeight * 0.5, onUpdate: mov});
}
function mov(){
//cp.container.width = stage.stageWidth;
//cp.container.height = stage.stageH
//try {
// //trace(cp.container)
// if (!TweenMax.isTweening(cp.container)){
// var obj: Object = {width: stage.stageWidth, height: stage.stageHeight, parent: stage, x: 0, y: 0}
// kFit(cp.container, obj, 5);
// kAlign(cp.container, obj);
// }
// } catch (e: Error){}
info.des_txt.width = stage.stageWidth-2*info.des_txt.x;
info.info_bg.width = stage.stageWidth;
info.info_bg.height = info.des_txt.height;
var h: Number = stage.stageHeight;
if (pausing){
h -= info.des_txt.height;
}
info.y = h;
try {
if (cp.container.width>stage.stageWidth || cp.container.height>stage.stageHeight){
var obj: Object = {width: stage.stageWidth, height: stage.stageHeight, parent: stage}
kFit(clickArea, obj);
//kAlign(clickArea, obj);
clickArea.x = (stage.stageWidth-clickArea.width)/2;
clickArea.y = (stage.stageHeight-clickArea.height)/2;
} else {
clickArea.x = cp.container.parent.x-cp.container.width/2;
clickArea.y = cp.container.parent.y-cp.container.height/2;
clickArea.width = cp.container.width;
clickArea.height = cp.container.height;
}
} catch (e: Error){}
try {
if (video_hld.parent != null && video_hld.visible == true){
cp.container.visible = false;
}
video_hld.x = clickArea.x;
video_hld.y = clickArea.y;
video_hld.width = clickArea.width;
video_hld.height = clickArea.height;
} catch(e: Error){}
try {
if (swf_hld.parent != null && swf_hld.visible == true){
cp.container.visible = false;
}
swf_hld.x = clickArea.x;
swf_hld.y = clickArea.y;
swf_hld.width = clickArea.width;
swf_hld.height = clickArea.height;
} catch(e: Error){}
//trace(swf_hld);
closeBtn.x = clickArea.x+clickArea.width-closeBtn.width-10;
closeBtn.y = clickArea.y+10;
//********************
}
function zoomCamera(evt:MouseEvent){
var tmp: Number = tz+evt.delta/10;
if (tmp<minZoom){tmp=minZoom}
if (tmp>maxZoom){tmp=maxZoom}
tz =tmp;
}
function render(e:Event):void
{
if (!pausing){
var pos : Number = stage.mouseX/stage.stageWidth*2-1;
//recalculate the target postion
camera.extra.ry = pos*40;
camera.extra.x += pos*80;
//at two side
if (camera.extra.x<1.5*(w+d)){
camera.extra.ry = 0;
camera.extra.x = 1.5*(w+d);
}
if (camera.extra.x>(nPics/n-2)*(w+d)){
camera.extra.ry = 0;
camera.extra.x = (nPics/n-2)*(w+d);
}
//ease render
camera.x += (camera.extra.x - camera.x)/5;
camera.rotationY += (camera.extra.ry - camera.rotationY)/8;
}
camera.zoom += (tz-camera.zoom)/5;
scene.renderCamera(camera);
}
if (popout==0){
popout = 0.05;
}
if (popout==1){
popout = 0.99;
}
function clicked(evt: * = null){
try{
video_hld.bar_player.clkStop();
} catch (e:Error){}
var p: * = pContainer[evt.target];
if (!p.extra.chk){
// click first time
stage.removeEventListener(MouseEvent.MOUSE_WHEEL, zoomCamera);
try {
//
TweenMax.to(cp, 1,{z: cp.extra.cz, scaleX : 1, scaleY : 1});
if(cp.extra["reflect"] != undefined){
TweenMax.to(cp.extra["reflect"], 1, {z: 0});
}
pContainer["temp"] = cp.container["filters"];
cp.container["filters"] = null;
delete pContainer["temp"];
cp.extra.chk = false;hideClose();
} catch (e: Error){};
var k: Number = (tz-minZoom)/(maxZoom-minZoom)+1;
TweenMax.to(p, 1, {z: popout*camera.z/k,onComplete:showInfo,onCompleteParams:[p, evt.target]});
TweenMax.to(p.container, 1, {glowFilter:{color:glowColor, alpha:1, blurX:8, blurY:8, strength:2}});
TweenMax.to(camera, 2, {x: p.extra.cx, y: p.extra.cy, rotationY: 0,onComplete:cameraComplete,onCompleteParams:[p, evt.target]});
if(p.extra["reflect"] != undefined){
TweenMax.to(p.extra["reflect"], 1, {z: -150});
}
cp = p;
pausing = true;
} else {
// second click
//hideClose();
TweenMax.to(p, 1,{z: p.extra.cz, scaleX : 1, scaleY : 1, onComplete: returnMouseWheel});
if(p.extra["reflect"] != undefined){
TweenMax.to(p.extra["reflect"], 1, {z: 0});
}
pContainer["temp"] = p.container["filters"];
p.container["filters"] = null;
delete pContainer["temp"];
TweenMax.to(camera, 2, {y: camera.extra.y})
pausing = false;
hideInfo();hideClose();
}
p.extra.chk = !p.extra.chk;
}
function returnMouseWheel(){
stage.addEventListener(MouseEvent.MOUSE_WHEEL, zoomCamera);
}
function cameraComplete(...rest){
var p : * = rest[0];
var tar : * = rest[1];
var scl : Number = p.extra.wP/tar.width;
if (fitScreen){
scl *= Math.min((stage.stageWidth-10)/p.extra.wP, (stage.stageHeight-10)/p.extra.hP);//5 = - outter glow effect border
}
TweenMax.to(rest[0], 1, {scaleX: scl, scaleY: scl, onComplete: showClose, onCompleteParams: [p, tar]});
}
function showInfo(...rest){
var p : * = rest[0];
info.des_txt.htmlText = p.extra.des;
addChild(info);
info.visible = true;
pausing = false;
mov();
pausing = true;
TweenMax.to(info, 0.5, {y: stage.stageHeight-info.des_txt.height});
}
function hideInfo(){
TweenMax.to(info, 0.5, {y: stage.stageHeight, onComplete: inviInfo});
}
function inviInfo(){
info.visible = false;
}
var video_hld : video_holder;
var swf_hld : MovieClip;
function showClose(...rest){
//stage.mouseEnabled = false;
//stage.removeEventListener(MouseEvent.MOUSE_WHEEL, zoomCamera);
cp.container.mouseEnabled = false;
clickArea.width = cp.container.width;
clickArea.height = cp.container.height;
clickArea.x = cp.container.parent.x-cp.container.width/2;
clickArea.y = cp.container.parent.y-cp.container.height/2;
closeBtn.x = clickArea.x+clickArea.width-closeBtn.height-15;
closeBtn.y = clickArea.y+10;
if(cp.extra.video != ""){
//trace(cp.extra.video);
hideInfo();
video_hld = new video_holder();
stage.addChild(video_hld);
video_hld.bar_player.init({view: video_hld.video_dsp, mode: "flv"});
video_hld.x = clickArea.x;
video_hld.y = clickArea.y;
video_hld.video_dsp.getChildAt(0).width = video_hld.video_bg.width = clickArea.width;
video_hld.video_dsp.getChildAt(0).height = video_hld.video_bg.height = clickArea.height;
video_hld.bar_player.resizeVideo({w: clickArea.width, h: clickArea.height});
video_hld.bar_player.resizeController(clickArea.width);
video_hld.bar_player.y = clickArea.height - video_hld.bar_player.height;
video_hld.bar_player.x = (clickArea.width - video_hld.bar_player.width)/2;
video_hld.bar_player.loadMedia({link: cp.extra.video}, false);
} else if (cp.extra.swf != ""){
//trace(cp.extra.swf);
hideInfo();
swf_hld = new MovieClip();
//if (swf_hld==null) swf_hld = new MovieClip();
stage.addChild(swf_hld);
while (swf_hld.numChildren>0){
swf_hld.removeChildAt(0);
}
swf_hld.x = clickArea.x;
swf_hld.y = clickArea.y;
LoadIMG.load(String(cp.extra.swf), {to: swf_hld, form: {x: 0, y: 0, width: clickArea.width, height: clickArea.height}});
} else {
stage.addChild(clickArea);
}
stage.addChild(closeBtn);
}
function hideClose(...rest){
cp.container.mouseEnabled = true;
cp.container.scaleX = cp.container.scaleY = 1;
cp.container.visible = true;
try {
stage.removeChild(closeBtn);
} catch(e: Error){}
try {
stage.removeChild(clickArea);
} catch(e: Error){}
try {
stage.removeChild(video_hld);
} catch(e: Error){}
try {
stage.removeChild(swf_hld);
} catch(e: Error){}
}
function clkClose(evt: MouseEvent){
try{
video_hld.bar_player.clkStop();
} catch (e:Error){}
clicked({target: cp.container});
//stage.addEventListener(MouseEvent.MOUSE_WHEEL, zoomCamera);
}
function over(evt: Event){
}
function out(evt: Event){
}
function getlink(evt: MouseEvent = null){
navigateToURL(new URLRequest(cp.extra.url), "_blank");
}
function loaded(evt: Event){
scene.removeChild(ploader);
try{
var bmd: BitmapData = Bitmap(myLd.content).bitmapData;
var bm : BitmapMaterial = new BitmapMaterial(bmd);
bm.smooth = false;
var scl : Number = Math.max(evt.target.width/w, evt.target.height/h);
var p:Plane = new Plane(bm, evt.target.width/scl, evt.target.height/scl, 2, 2);
scene.addChild(p,"p"+cPics);
p.x = int(cPics/n)*(w+d);
p.y = -(cPics % n)*(h+d)-(h-evt.target.height/scl)/2+100;
p.extra = {
chk : false,
cz : p.z, cx : p.x, cy: p.y,
scl : scl,
des : xml.item[cPics],
url : xml.item[cPics].@url,
video: (xml.item[cPics].@flv != undefined) ? xml.item[cPics].@flv : "",
swf : (xml.item[cPics].@swf != undefined) ? xml.item[cPics].@swf : "",
wP:evt.target.width,
hP:evt.target.height
}
// reflect pictures
if (cPics % n==n-1){
bm.doubleSided = true;
bm.name = "back";
var bmp2:BitmapData = new BitmapData( w, h, true, 0x000000);
// Flip vertical
var m:Matrix = new Matrix();
m.createBox(1/scl, -1/scl, 0, (w-p.extra.wP/scl)/2, h-(h-evt.target.height/scl));
bmp2.draw( bmd, m );
//Reflection Bitmap Object
var b2:Bitmap = new Bitmap(bmp2);
// Reflection mask
m.createGradientBox(w, h,Math.PI/2,h);
var mymask:Shape = new Shape();
mymask.graphics.lineStyle(0,0,0);
mymask.graphics.beginGradientFill("linear", [0x000000, 0x000000],[0.5, 0], [0, 190],m) ;
mymask.graphics.drawRect(0,0,w,h);
mymask.graphics.endFill();
// CacheaAsBitmap
mymask.cacheAsBitmap = true;
b2.cacheAsBitmap = true;
// Create mask
b2.mask = mymask;
addChild(b2);
addChild(mymask);
var bmp3:BitmapData = new BitmapData(w, h, true, 0x000000);
bmp3.draw(b2);
// Create Reflection plane
var bm2:BitmapMaterial = new BitmapMaterial(bmp3);
bm2.smooth = true;
bm2.doubleSided = true;
var p2:Plane = new Plane(bm2, 1, 0, 2, 2);
p2.x = int(cPics/n)*(w+d);
p2.y =100 -(cPics % n)*(h+d)-(h+d/5);
p.extra["reflect"] = p2;
scene.addChild(p2);
removeChild(b2);
removeChild(mymask);
p.extra.ref = p2;
}
p.container.buttonMode = true;
p.container.name = "p"+cPics;
p.container.addEventListener(MouseEvent.CLICK, clicked);
pContainer[p.container] = p;
} catch(e: Error){};
cPics++;
(cPics<nPics) ? loadImg(xml.item[cPics].@link) : null;
}
function loadImg(lnk: String){
myLd = new Loader();
myLd.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
myLd.load(new URLRequest(lnk));
ploader.x = int(cPics/n)*(w+d);
ploader.y = 100-(cPics % n)*(h+d);
scene.addChild(ploader);
}
function rotLoader (...rest){
ploader.rotationZ+=10;
}
function drawRect(w, h: Number): Sprite{
var sprt : Sprite = new Sprite();
with (sprt.graphics){
beginFill(0, 0);
drawRect(0, 0, w, h);
endFill();
}
return sprt;
}
//stage.addChild(update_mc);
//************************************************** ADD VIDEO ***************************************************
//bar_player.init({view: video_dsp, mode: "flv"});
//bar_player.loadMedia("1.flv", false);
//****************************************************************************************************************
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.