A Flash Developer Resource Site

Results 1 to 2 of 2

Thread: change from mouse x to drag

  1. #1
    Senior Member
    Join Date
    Aug 2006
    Posts
    293

    change from mouse x to drag

    hi all,

    trying to work something out here, and the solution seems to be eluding me, totally!

    i have some script that creates a rotating video wall/carousel effect that rotates left and right depending on where the mouse is.

    I want the carousel to only rotate when the mouse is down and dragging - but just can't seem to work out what i need to change.

    how do I define the drag action instead of the current +x & -x co-ordinates??

    here is the full script for the entire carousel

    Code:
    */
    import org.papervision3d.scenes.*;
    import org.papervision3d.cameras.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.materials.*;
    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    
    
    var container:Sprite = new Sprite();
    container.x = 400;
    container.y = 325;
    addChild(container);
    
    var scene:Scene3D = new MovieScene3D(container);
    var cam:Camera3D = new Camera3D();
    cam.zoom = 6;
    
    tipp.tn_title.text = "";
    tipp.tn_desc.text = "";
    tipp.tn_url.text = "";
    var tw:Tween = new Tween(tipp, 'alpha', Strong.easeOut, 1, 0, 0.6, true);
    
    var p_dict:Dictionary=new Dictionary();
    var pc:Plane = new Plane();
    pc.visible = false;
    cam.target = pc;
    
    var numOfRotations:Number = 3;
    var yPos:Number = 0;
    var angle:Number = 0;
    
    var filename_list = new Array();
    var url_list = new Array();
    var url_target_list:Array = new Array();
    var rel_list:Array = new Array();
    var title_list = new Array();
    var description_list = new Array();
    var folder:String = "thumbnails/";
    
    var i:Number;
    var j:Number = 0;
    var k:Number = 0;
    var l:Number = 0;
    var m:Number = 0;
    var total:Number;
    var flashmo_xml:XML = new XML();
    var loader:URLLoader = new URLLoader();
    loader.load(new URLRequest("thumbnail_list_3.xml"));
    loader.addEventListener(Event.COMPLETE, create_thumbnail);
    
    function create_thumbnail(e:Event):void 
    {
    	flashmo_xml = XML(e.target.data);
    	total = flashmo_xml.thumbnail.length();
    	var anglePer:Number = ((Math.PI*2) * numOfRotations) / total;
    	
    	for( i = 0; i < total; i++ )
    	{
    		url_list.push( flashmo_xml.thumbnail[i].@url.toString() );
    		url_target_list.push( flashmo_xml.thumbnail[i].@target.toString() );
    		rel_list.push( flashmo_xml.thumbnail[i].@rel.toString() );
    		title_list.push( flashmo_xml.thumbnail[i].@title.toString() );
    		description_list.push( flashmo_xml.thumbnail[i].@description.toString() );
    		
    		var bfm:BitmapFileMaterial = new BitmapFileMaterial(
    			folder + flashmo_xml.thumbnail[i].@filename.toString());
    		bfm.oneSide = false;
    		bfm.smooth = true;
    		var p:Plane = new Plane(bfm, 140, 105, 2, 2);
    		scene.addChild(p);
    var p_container:Sprite = p.container;
    		p_container.name = "flashmo_" + i;
    		p_dict[p_container] = p;
    		p_container.buttonMode = true;
    		p_container.addEventListener( MouseEvent.ROLL_OVER, p_rollover );
    		p_container.addEventListener( MouseEvent.ROLL_OUT, p_rollout );
    		p_container.addEventListener( MouseEvent.CLICK, p_click );
    		
    		p.rotationY = (-i*anglePer) * (180/Math.PI) + 90;
    		p.x = Math.cos(i * anglePer) * 480;
    		p.z = Math.sin(i * anglePer) * 480;
    		p.y = yPos;
    
    		if( (i+1) % 20 == 0 )
    		{
    			 yPos += 115;
    		}
    	}
    }
    
    function p_rollover(me:MouseEvent) 
    {
    	var sp:Sprite = me.target as Sprite;
    	var tw:Tween = new Tween(sp, 'alpha', Strong.easeOut, 0.5, 1, 0.6, true);
    	var tw:Tween = new Tween(tipp, 'alpha', Strong.easeOut, 0, 1, 0.6, true);
    	var s_no:Number = parseInt(sp.name.slice(8,10));
    	tipp.tn_title.text = title_list[s_no];
    	tipp.tn_desc.text = description_list[s_no];
    	tipp.tn_url.text = url_list[s_no];
    }
    function p_rollout(me:MouseEvent) 
    {
    	var sp:Sprite = me.target as Sprite;
    	var tw:Tween = new Tween(sp, 'alpha', Strong.easeOut, 1, 0.5, 0.6, true);
    	var tw:Tween = new Tween(tipp, 'alpha', Strong.easeOut, 1, 0, 0.6, true);
    tipp.tn_title.text = "";
    	tipp.tn_desc.text = "";
    	tipp.tn_url.text = "";
    }
    
    var script:XML =
    <script>
        <![CDATA[
                 function(url, title_list, description_list, rel_list)
                 {
                    myLightWindow.activateWindow({href: url,
                                                 title: title_list});
                 }
                 ]]>
    </script>;
    
    function p_click(me:MouseEvent)  
    {  
        var sp:Sprite = me.target as Sprite;
        var s_no:Number = parseInt(sp.name.slice(8,10));
        trace("rel is '"+rel_list[s_no]+"'");ExternalInterface.call(script, url_list[s_no], title_list[s_no], description_list[s_no], rel_list[s_no]);
    } 
    addEventListener(Event.ENTER_FRAME, render);
    
    function render(e:Event):void
    {
    	var dist2:Number = ((stage.mouseX) - 400) * 0.0001;
    	angle += dist2;
    	cam.x = - Math.cos(angle) * 150;
    	cam.z = Math.sin(angle) * 150;
    	var new_zoom = 5; 
    	cam.zoom += ( new_zoom - cam.zoom ) * 0.06;
    	scene.renderCamera(cam);
    }
    this is the block that (I think) controls the rotation at the moment but maybe a more experienced pair of eyes can see something else in there!
    Code:
    addEventListener(Event.ENTER_FRAME, render);
    
    function render(e:Event):void
    {
    	var dist2:Number = ((stage.mouseX) - 400) * 0.0001;
    	angle += dist2;
    	cam.x = - Math.cos(angle) * 150;
    	cam.z = Math.sin(angle) * 150;
    	var new_zoom = 5; 
    	cam.zoom += ( new_zoom - cam.zoom ) * 0.06;
    	scene.renderCamera(cam);
    }
    i thought briefly that this might work
    Code:
    function render(e:MouseEvent.MOUSE_DOWN):void
    {
    	var dist2:Number = ((stage.mouseX) - 400) * 0.0001;
    	angle += dist2;
    	cam.x = - Math.cos(angle) * 150;
    	cam.z = Math.sin(angle) * 150;
    	var new_zoom = 5; 
    	cam.zoom += ( new_zoom - cam.zoom ) * 0.06;
    	scene.renderCamera(cam);
    }
    but just seems to give me errors - would that be because i haven't defined anything else to do with the dragging? how do I declare the carousel is to stop on mouse up?

    am i even looking in the right place? does the rotation of the carousel start elsewhere?

    Be grateful for any pointers/advice/help that you good folks can offer me.
    **crosses fingers**

  2. #2
    a.k.a gltovar deadlock32's Avatar
    Join Date
    May 2001
    Location
    Naperville,IL
    Posts
    489
    ok let me point this out first:

    PHP Code:
    addEventListener(Event.ENTER_FRAMErender);
    function 
    render(e:Event):void {} 

    is acutally adding the event listener to the display object that you are coding in, so it would be be:
    PHP Code:
    this.addEventListener(Event.ENTER_FRAMErender);
    function 
    render(e:Event):void {} 
    so when you attempted this line:

    PHP Code:
    function render(e:MouseEvent.MOUSE_DOWN):void 
    you are not following the same 'rules'

    PHP Code:
    addEventListener(MouseEvent.MOUSE_DOWNrender);
    function 
    render(e:MouseEvent):void {} // don't forget to match the event 
    Now this wasn't a direct answer to your question, but should answer some of the errors you were getting when you compiled.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center