دسترسی به اشیای 3 بعدی از طریق مشخصه name آنها و یا جمع آوری آنها در آرایه

++Hadi++

Active Member
سلام خسته نباشید .
من نیاز به کمک فوری دارم ... پس خواهشن هر کی می تونه کمکم کنه ...:shock:
من با papervision و TweenMax کار می کنم . من یک سری مربع ها (حدود 500 عدد ) رو با حلقه for ساختم و به اونها به صورت داینامیک ( استفاده از counter ) اسم (name ) دادم .
حالا می خوام با فراخونی اسمشون (name ) به هر کدوم دسترسی داشته باشم و اونها رو مثلا به TweenMax پاس بدم تا جابجاشون کنم . چطور می تونم این کار رو انجام بدم و اگر این راهش نیست ، چطور می تونم اینا رو در یک آرایه 3 بعدی قرار بدم تا به تک تکشون دسترسی داشته باشم .؟؟؟
در ضمن این مربع عا در 3 حلقه for تو در تو درست می شند و اسامیشون تشکیل شده از 3 شمارنده حلقه که با آندرلاین ، از هم تفکیک می شند .:sad:
PHP:
for(var counter01:Number=0;counter01<4;counter01++)
     {
     for(var counter02:Number=0;counter02<10;counter02++)
          {
          for(var counter03=0;counter03<20;counter03++)
               {
               var myPlane:Plane=new Plane(material,10,10);
              myPlane.name="Plane"+counter01+"_"+counter02+"_"+counter03;
               }
          }
     }
و حالا فرض کنید تابع دیگه ای بنویسیم و بخواهیم به رده هاص خاص اینا دسترسی داشته باشیم...؟
آیا بهتر نیست که آرایه 3 بعدی درست کنیم و اینا رو در آرایه 3 بعدی قرار بدیم .؟
خوب اگه اینطور بود چطور اونا رو به TweenMan پاس بدم ؟
 
آخرین ویرایش:

arjmand200

Member
دادن اسم یک ابجکت برای دسترسی به متدهای اون میتونه یکی از روشهای دسترسی به متدهای اون باشه که با متد getChildByName انجام میشه ولی برای راحتیتون و اینکه بتونین همه ابجکتهای خودتون رو کنترل کنین یه continer از نوع DisplayObject3D بسازین و همه اون ابجکتها رو داخل اون بزارین بعدا میتونین حتی اون continer رو با موس کنترل کنین

PHP:
var continer:DisplayObject3D = new DisplayObject3D ()
scene.addChild(continer)
for(var i:int=0;i<10;1++){
	var plane:Plane = new Plane(null)
	continer.addChild(plane)	
}
 

++Hadi++

Active Member
از جناب ارجمند و بایودرد تشکر می کنم ...
من یه فانکشن نوشتم که پارامتر ایکس و ایگرگ و زد و شماره پنجره رو می گیره و با استفاده از حلقه های for تو در تو ، یه پنجره با 4 تا مربع می کشه که هر کدوم از این مربع ها تشکیل شده اند از 25 مربع کوچیک (5 * 5 ) . در کل با این فانکشن ، من 12 تا پنجره رو در یک محیط ترسیم کردم .
حالا می خوام با استفاده از نامهایی که به هر کدوم دادم ، و یا با استفاده از آرایه 3 بعدی می خوام یه فانکشن حرکت اشیا بنویسم .
فانکشن حرکت اشیا می یاد و با گرفتن شماره پنجره ، رده مربع های کوچیک رو رده بندی می کنه تا اینا رو در رده های خاص حرکت بده .
آقای ارجمند ، شما استفاده از یک DisplayObject3D رو برای تجمع مربع ها فرمودین . حالا من getChildByName رو تست می کنم ...
ولی چطور می تونم اونا رو در آرایه 3 بعدی قرار بدم تا با اون کنترل کنم .؟؟؟
چطور می تونم در TweenMax ، با استفاده از نام خانه آرایه یا با استفاده از getChildByName ، مربع ها رو حرکت بدم ؟؟؟
PHP:
TweenMax.to(myArray[2][2][2],3,{x:50,y:50,ease:Circ.easeOut});
TweenMax.to(getgetChildByName(Plane03_03_03),3,{x:50,y:50,ease:Circ.easeOut});
???????????????????????????????????????
اگه می شه یخورده توضیح بدین؟؟؟
 
آخرین ویرایش:

++Hadi++

Active Member
اساتید حل شد از همگی ممنونم:
این دستور ساختن یه آرایه 3 بعدی :
PHP:
        private function createArray():void 
        {
            for (var counter01:Number= 0; counter01 < 12;counter01++ )
            {
                ObjectsArray[counter01] = new  Array(4)
                
                for (var counter02:Number = 0; counter02 < 4;counter02++ )
                {
                    ObjectsArray[counter01][counter02] = new Array(25);
                    
                }
            }
        }
بعد از ساختن هر Plane در حلقه های for اونا رو به خانه مناسب آرایه پاس می دیم .
بعد از این کار یه نمونه از کلاس DisplayObject3D و پاس دادن شی مناسب به اون همه چی حلله :

PHP:
        private function MainStart(evt:TweenEvent):void 
        {
            var myPlanee:DisplayObject3D = ObjectsArray[1][1][1];
            TweenMax.to(myPlanee, 3, { x:300,y:400,z:200,ease:Circ.easeIn } );
        }
از تمامی دوستان ممنونم و خداحافظ...
 

++Hadi++

Active Member
یه سؤال دیگه
من کلاس Main کارمو زیر کلاس BasicView کردم که خودش هم دوربین داره و هم viewport و ...
چرا زمینه کارم که یه Plane هست و روش پنجره ها قرار گرفتند ، پنجره ها از دید افق ، به هم خورن و دیده نمی شن ... فک کنم یه مشکل رندر باشه ...؟؟؟
مثلا پنجره مربع یه تیکش دیده نمی شه ؟؟؟
من حتی نوع رندر رو quad قرار دادم نشد که هیچ تازه سرعتش هم پایین اومد؟؟؟
Plane کف هم این مشکل رو داشت ولی با بالا بردن Segment های این Plane ، این مشکل حل شد ولی در مورد چند صد یا هزار تا مربع کوچیک ، این کار به صرفه نیست ...
چیکار کنم؟
 
آخرین ویرایش:

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

بالا