Controll rotationX and Y via mouse

JavidFlasher

کاربر فعال
سلام دوستان
کسی الگوریتمی کلاسی
یا هر چیزه ساده ای نداره که باهاش بتونم یه آبجکت 2dرو با موس بچرخونم مثل یه آبجکت 3d!
خواستم از انجینای 3dاستفاده کنم دیدم حجیم میشه کارم.
وقتم تنگه وگرنه خودم مینوشتم . . .
 

benyamin_pc

Well-Known Member
اون سایت خبرگان که راه نیافتاد میخاستم به زودی ی آموزش پایه از نوشتن همچین چیزائی به صورت دستی همین جا بذارم اما فعلا ی راه به قول یکی از بچه ها برره ای می گم که راحت و کار راه اندازه و فکرم نمیخاد و حتی با این راه برره ای ی بازی هم دیدم نوشتن و تو همون لینک ستا که روبات و بازی توشه هست
راه برره ای چرخاندن اینتراکتیو یک آبجکت با موس توسط فلش : اول وارد محیطی مثل 3d-max شین یا cool-3d ساده و یک آبجکتو در راستای افق بچرخونین و خروحی بگیرین , بعد اونو بیارین تو فلش و با فکر کردن به فرم نوشتن یک پلیر swf اونو توسط موس به شکل اینتر اکتیو بدین دست کاربر تا بچرخونتش!
 

++Hadi++

Active Member
یعنی چی یعنی مثل یه ورق کاغذ شه که rotate کنه ؟ اگه می خوای شیئت یه شکل جعبه اینا باشه سمپل واست خواهم گذاشت...
 

benyamin_pc

Well-Known Member
مثل ورق کاغذم میخای جسمت بچرخه فقط rotationY اونو تو ی تایمر زیاد کن
 

JavidFlasher

کاربر فعال
منظور من کنترل rotationX va Xبود .
خودم یه چیزی نوشتم
نمونه هم پیوست کردم:
PHP:
package 
{
	import flash.events.MouseEvent;
	import flash.events.Event;
	import flash.display.DisplayObject;
	import flash.display.Stage;
	import flash.display.Sprite;
	import flash.utils.*;
	/**
	 * ...
	 * @author JavidJafari
	 */

	public class Rotator extends Sprite
	{
		public var myDisplayObject:DisplayObject;
		private var positionY:Number = 0;
		private var positionX:Number = 0;
		private var offset:Number = 1;

		public function Rotator(displayObject:DisplayObject,theStage:Stage,Offset:Number=1)
		{
			offset = Offset;
			delta();
			myDisplayObject = displayObject;
			myDisplayObject.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
			theStage.addEventListener(MouseEvent.MOUSE_UP,onUp);
		}



		public function delta()
		{
			//positionY
			var y1:Number = mouseY;
			var y2:Number;
			//positionX
			var x1:Number = mou***;
			var x2:Number;
			setTimeout(set_loop,20);
			function set_loop()
			{
				//
				y2 = mouseY;
				positionY = y1 - y2;
				//
				x2 = mou***;
				positionX = x1 - x2;
				delta();
			}
		}

		private function onDown(e:MouseEvent)
		{
			myDisplayObject.addEventListener(Event.ENTER_FRAME,onMove);
		}
		private function onUp(e:MouseEvent)
		{
			myDisplayObject.removeEventListener(Event.ENTER_FRAME,onMove);
		}

		private function onMove(e:Event)
		{
			//rotationX
			if (positionX > 0)
			{
				myDisplayObject.rotationY +=  Math.abs(positionX);
			}
			if (positionX < 0)
			{
				myDisplayObject.rotationY -=  Math.abs(positionX);
			}
			//rotationY
			if (positionY < 0)
			{
				myDisplayObject.rotationX +=  Math.abs(positionY);
			}
			if (positionY > 0)
			{
				myDisplayObject.rotationX -=  Math.abs(positionY);
			}
		}
	}

}


PHP:
var rt:Rotator=new Rotator(mc,stage,3)
 

پیوست ها

  • Rotator.zip
    1.1 مگایابت · بازدیدها: 42

benyamin_pc

Well-Known Member
این همون چرخش مثل کاغذه که با خود فلش انجام میشه دیگه
rotationX و rotationY
اما اون لینک ایجاد چرخش 3 بعدی به صورت پایه ای و دستی بود که گذاشتم و چرخش مثلا ی جعبرو میشه باهاش شبیه سازی کرد که اصل کار با 3 بعدیه
 

benyamin_pc

Well-Known Member
البته با همین rotationY و rotationX خود فلش هم میشه چرخش جعبرو نه کاغذ انجام داد اما وقتی تو کارای پیچیده تر فرو بریم باید برگردیم به ماتریس ها
 

JavidFlasher

کاربر فعال
مچکرم بنیامین.
من فقط میخواستم با موس روش کنترل داشته باشم
که همینی که نوشتم کارم رو راه انداخت. . .
 

JavidFlasher

کاربر فعال
ممنون علی
ولی منظور من اینجوری نبود
این فقط یه تناسب بین فریم و حرکت موسه .
منظور من همین بود که نوشتم.
اگه کسی راه بهینه تری برای این کار سراغ داره بگه
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا