زوم و پن با کنترل و شیفت و حرکت موس

MRHArtsClube

New Member
سلام دوستان و اساتید بزرگوار
لطفا یکی جواب بده به پست من! کارم گیره شدید! :cry::sad:
میخوام یه چیز شبیه اینو توی اکشن 2 بسازم! فقط بحث زوم و پنشو:
HTML:
http://worrydream.com/GesturalZoomAndPan/
توی این پروژه با نگه داشتن Shift و بالا پایین کردن موس زوم و آن زوم میکنه (دقیقا از روی اون نقطه ای که شیفت نگه داشته شده) و با نگه داشتن کنترل و حرکت موس هم پن میکنه!
لطفا کمک کنید! :sad:
 

Avang2005

مدیر انجمن
سلام دوست من

نمونه رو نتونستم ببینم باز نشد

ولی فکر میکنم کلاس هایی هست که رجیستر پوینت رو در جاهای مختلف Move کنه که فکر نمیکنم بشه توی اکشن 2 این کار رو کرد البته بنده کارایی واسم نداشته که برم دنبالش شاید هم بشه

برای راهنمایی بیشتر یکی از دوستان یک زوم بروی نقشه در انجمن قرار داده پیشنهاد میکنم اون نمونه را ببنید

موفق باشید
 

MRHArtsClube

New Member
سلام دوست عزیز
من مشکلم طور دیگه ای حل شد اما واسم جالبه بدونم این چطور کار میکنه!
فایل رو پیوست کردم!
واسه اینکه با نگهداشتن یه کلید و حرکت موس بتونم یه کاری بکنم مشکلی ندارم! اینکه دقیقا چکار بکنم رو نمیدونم! :rose: ممنون از راهنماییتون!
 

پیوست ها

  • ZP.zip
    146.8 کیلوبایت · بازدیدها: 78

MRHArtsClube

New Member
خب فکر کنم این قضیه تعویض ریجستر پوینت رو توی اکشن 2 حل میکنه:
PHP:
 var MCP = MovieClip.prototype;
 MCP._xreg = MCP._yreg=0;
 MCP.setPropRel = function(prop, amount) {
  var a = {x:this._xreg, y:this._yreg};
  this.localToGlobal(a);
  this._parent.globalToLocal(a);
  this[prop] = amount;
  var b = {x:this._xreg, y:this._yreg};
  this.localToGlobal(b);
  this._parent.globalToLocal(b);
  this._x -= b.x-a.x;
  this._y -= b.y-a.y;
 };
 MCP.set_x2 = function(v) {
  var a = {x:this._xreg, y:this._yreg};
  this.localToGlobal(a);
  this._parent.globalToLocal(a);
  this._x += v-a.x;
 };
 MCP.get_x2 = function() {
  var a = {x:this._xreg, y:this._yreg};
  this.localToGlobal(a);
  this._parent.globalToLocal(a);
  return a.x;
 };
 MCP.set_y2 = function(v) {
  var a = {x:this._xreg, y:this._yreg};
  this.localToGlobal(a);
  this._parent.globalToLocal(a);
  this._y += v-a.y;
 };
 MCP.get_y2 = function() {
  var a = {x:this._xreg, y:this._yreg};
  this.localToGlobal(a);
  this._parent.globalToLocal(a);
  return a.y;
 };
 MCP.set_xscale2 = function(v) {
  this.setPropRel("_xscale", v);
 };
 MCP.get_xscale2 = function() {
  return this._xscale;
 };
 MCP.set_yscale2 = function(v) {
  this.setPropRel("_yscale", v);
 };
 MCP.get_yscale2 = function() {
  return this._yscale;
 };
 MCP.set_rotation2 = function(v) {
  this.setPropRel("_rotation", v);
 };
 MCP.get_rotation2 = function() {
  return this._rotation;
 };
 MCP.get_xmouse2 = function() {
  return this._xmouse-this._xreg;
 };
 MCP.get_ymouse2 = function() {
  return this._ymouse-this._yreg;
 };
 with (MCP) {
  addProperty("_x2", get_x2, set_x2);
  addProperty("_y2", get_y2, set_y2);
  addProperty("_xscale2", get_xscale2, set_xscale2);
  addProperty("_yscale2", get_yscale2, set_yscale2);
  addProperty("_rotation2", get_rotation2, set_rotation2);
  addProperty("_xmouse2", get_xmouse2, null);
  addProperty("_ymouse2", get_ymouse2, null);
 }
 ASSetPropFlags(MCP, null, 1);
 delete MCP;
 //set the registration point
 //mc._xreg = 100;
 //mc._yreg = 70;
 //to position the movie clip according to the new reg point use
 //mc._rotation2 = 60;
 //mc._x2 = 60;
 //mc._y2 = 60;
 //mc._xscale2 = 50;
 //mc._yscale2 = 50;
پس میشه حالا فقط بحث چگونگی محاسبات برای حرکت دادن یا Pan کردن، و اینکه الگوریتم زوم چطوریه رو انجام بدیم؟:-?
 

Avang2005

مدیر انجمن
سلام دوست من

این نمونه ای که قرار دادید خیلی ساده هست اینجا Scale موی کلیپ و ... رو تغییر میکه که در انجمن میتونید سرچ کنید

قبلا توضیح داده شده

اینجا از کلید های ترکیبی شیفت و حرکت موس استفاده شده و این عمل در این رویداد قرار گرفته شده

موفق باشید
 

moonch

Member
سلام به همه
من می خوام برای درگ محدوده بذارم. در حالت عادی فقط برای یک جهت میشه محدوده گذاشت . فرضا می گیم درگ از این نقطه تا فلان نقطه انجام بشه اما برای جهت مخالف؟
کاری که کردم این بود که یه مووی کلیپ دارم به اسم image . یک مووی کلیپ دارم به اسم mask1 که سایزش کوچکتر از سایز تصویرم (image ) هست. اول دو تا تابع تعریف می کنم که هر کدوم میان mousedownx و mousemovex رو می گیرن. بعد تابع copmare میاد مقایسه می کنه که اگه (movex>downx)یعنی اگه جهت درگ به سمت راست هست بیاد درگ رو تو مرز مشخص شده اتنجام بده. اما متاسفانه چه این شرط برقرار باشه چه نباشه درگ انجام میشه. یعنی جهت براش فرقی نی کنه. نمی دونم چرا..




[PHPS]

var boundsRect:Rectangle = new Rectangle(Image.x,0 ,mask1.x,0);var movex:intvar downx:intstage.addEventListener(MouseEvent.MOUSE_DOWN, show1);stage.addEventListener(MouseEvent.MOUSE_MOVE, show2);stage.addEventListener(MouseEvent.CLICK, compare);
function show1(e:MouseEvent):void { downx=mouseX; trace(downx); } function show2(e:MouseEvent):void { movex= mouseX; trace(movex); } function compare(event:MouseEvent):void { if (movex>downx) { trace("maha") Image.addEventListener(MouseEvent.MOUSE_DOWN, startDragging); stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging); function startDragging(mev:MouseEvent):void { Image.startDrag(false , (boundsRect)); Image.buttonMode = true} function stopDragging(mev:MouseEvent):void { Image.stopDrag();} } }

[/PHPS]


 
آخرین ویرایش:

moonch

Member
سلام به همه
من مشکل تعیین محدوه برای درگ داشتم. مشکلم حل شد. فایل رو پیوست کردم.
 

پیوست ها

  • mouse-5.rar
    23.9 کیلوبایت · بازدیدها: 15

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

بالا