duplicateMovieClip

padideh

Member
سلام
خسته نباشيد
سوال قبلي مارو كه كسي جواب نداد
حالا ببينم با اين چيكار ميكنين:wink:
من ميخوام تو يه فايل يه سري نقاط رو مشخص كنم كه مختصات اين نقاط تو يه فايل txt هست
PHP:
this.createEmptyMovieClip("target_mc", this.getNextHighestDepth());
loadVariables("1.txt", target_mc);
function checkParamsLoaded() {
	if (target_mc.y1 == undefined) {
		trace("not yet.");
	} else {
		for (b in target_mc) {
			duplicateMovieClip("cam", "cam"+b, b);
			setProperty("cam"+b, _y, target_mc[b]);
			setProperty("cam"+b, _x, target_mc[b]);
			}
		clearInterval(param_interval);
	}
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);
از اين استفاده كردم ولي فقط يه بار كار ميكنه يعني يه بار duplicatميكنه وسر جاش ميذاره
اينم فايل txt
x1=200&y1=80&x2=120&y2=144&x3=300&y3=250
البته مهم هم نيست كه حتما از txt استفاده كنم از xml يا هر چيز ديگه اي كه كاربر بتونه تغيير بده هم ميشه استفاده كرد
 
آخرین ویرایش:

shirini_forush

Well-Known Member
مشکل از depth ی ه که اختصاص دادید. یعنی b
به جاش اینو استفاده کنید:
PHP:
this.createEmptyMovieClip("target_mc", this.getNextHighestDepth());
loadVariables("1.txt", target_mc);
function checkParamsLoaded() {
    if (target_mc.y1 == undefined) {
        trace("not yet.");
    } else {
        for (b in target_mc) {
            duplicateMovieClip("cam", "cam"+b, Math.floor((Math.random()*10000000)));
            setProperty("cam"+b, _y, target_mc[b]);
            setProperty("cam"+b, _x, target_mc[b]);
			trace(target_mc[b]);
            }
        clearInterval(param_interval);
    }
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);
 

padideh

Member
سلام

ممنون كار كرد:D
حالا يه مشكل كوچيك ديگه مي مونه اونم اينه كه الان اولين عدد رو ميخونه و xوy رو بر مبناي اولين عدد تنظيم ميكنه ولي من ميخوام x رو از عدد اول بخونه y‌رو از عدد دوم و ..... الي اخر
و چون نقاط زياده نميشه بهش بگم target_mc.y4 target_mc.y3 target_mc.x2 و....
نميشه يه جوري مثلابا
PHP:
_root["target_mc.x"+a]
يا يه چيزي شبيه به اين كار كرد چون اين كار نميكنه
البته شايد لازم باشه يه فايل براي x ها بسازم و يكي براي y ها براي يا براي هر نقطه يه فايل هر راهي كه بهتره رو لطف ميكنيد بگيد البته راه عملي براي هيچكدوم از اين پيشنهاد ها ندارم :cry:
ممنون
[size=+2]يا علي[/size]
 

padideh

Member
پيدا كردم

پيدا كردم:idea:
اينم به عنوان آخرين مشكل (اگه خدا بخواد)
اگه بخوام وقتي موس رو هر كدوم از اين نقاط رفت يه Data اي كه مربوط به همون نقطه هست رو از تو يه فايل بخونه بايد چيكار كنم:cool:



اينم راه حل مشكل xوy :)

PHP:
a = 1;
var target_mc:MovieClip=this.createEmptyMovieClip("target_mc", 1000);
var moviexp:MovieClip=this.createEmptyMovieClip("moviexp", 1001);
loadVariables("1.txt", target_mc);
loadVariables("2.txt", moviexp);
function checkParamsLoaded() {
	if (moviexp.y1 == undefined) {
		trace("not yet.");
	} else {
		for (b in  moviexp) {
			duplicateMovieClip("cam", "cam"+b, a);
			_root["cam"+b]._y = target_mc[b];
			_root["cam"+b]._x = moviexp[b];
						a++;
		}
		clearInterval(param_interval);
	}
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);
[size=+2]يا علي[/size]
 

shirini_forush

Well-Known Member
برای این که دو تا فایل نشه میتونستی یه متغیر عددی بذاری و هر دفعه یکی بهش اضافه کنی.
بعد اگر عددت فرد بود مقدار رو به x و اگر زوج بود به y اختصاص میدادی.

برای این کار جدیدت هم میتونی با باقیمونده ی عدد بر 3 کار کنی. میتونی هم یه فایل دیگه برای توضیحات بذاری و مقدارشون رو به اینصورت بدی:
PHP:
_root['cam'+b].Comments = cmt_file[b];
_root.['cam'+b].onRollOver = function()
{
    trace(_root['cam'+b].Comments);
};
 

padideh

Member
سلام

خسته نباشي
از توجهت واقعا ممنونم
نمي دونم چرا كار نميكنه
اينطوري نوشتم .ممكنه اشتباه باشه
PHP:
var a:Number = 1;
var target_mc:MovieClip = this.createEmptyMovieClip("target_mc", 1000);
var moviexp:MovieClip = this.createEmptyMovieClip("moviexp", 1001);
var cmt_file:MovieClip = this.createEmptyMovieClip("cmt_file", 1002);
loadVariables("y.txt", target_mc);
loadVariables("x.txt", moviexp);
loadVariables("comment.txt", cmt_file);
function checkParamsLoaded() {
	if (moviexp.y1 == undefined) {
		trace("not yet.");
	} else {
		for (b in moviexp) {
			duplicateMovieClip("cam", "cam"+b, a);
			_root["cam"+b]._y = target_mc[b];
			_root["cam"+b]._x = moviexp[b];
			_root['cam'+b].Comments = cmt_file[b];
			a++;
			trace(_root['cam'+b].Comments);
		}
		clearInterval(param_interval);
	}
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);
_root['cam'+b].onRollOver = function() {
	trace(_root['cam'+b].Comments);
};
نميدونم كجا رو اشتباه رفتم ولي:cry:
يه سوال اين چه جوري ميفهمه كه رو كدوم movieclip هست كه بخواد commentesho صدا بزنه؟
اصلا خود فايلش رو هم ميذارم شايد مشكل چيز ديگه اي باشه (بي سوادي من)
فايل اصلي بيشتر از اين هرفاس اينو كوچيكتر درست كردم كه راحتتر download بشه
يا علي
 

پیوست ها

  • load.rar
    18.5 کیلوبایت · بازدیدها: 5
آخرین ویرایش:

shirini_forush

Well-Known Member
:lol:
عزیزم اون بیرون که b وجود نداره.
باید اون قطعه کد آخری رو بیاری تو حلقه تا 'cam'+b معنا داشته باشه...
 

kiarash.M

Active Member
سلام
من سورس آخريو ديدم
اگه ميگي که با RollOver کار نميکنه به اين علته که
يه بار تمام function ها خونده شده و رفته و اين دستور تو مربوط به لحظه اي که script اجرا ميشه
پس به خواطري که برگرداي بايد از يه interval استفاده کني
که بهتره به جاي اون از onEnterFrame استفاده کني
حالا اگرم استفاده کني
فک ميکنم که فقط واسه اولي کار کنه چون
onEnterFrame
for
بالايو به اصطلاح خفه ميکنه يعني نميزاره که بيوفته تو چرخه
اون ميوفته ها ولي اين تو همش لحضه اول رو تکرار مينه
×××××××××××××××××××××××××××××
اين مشکلي که تو بهش برخوردي مشکل خيلي از آدماي حرفه اي هم است
همش به علت جابه جا نوشتن کداس
مثلا کد LoadVars تو AS2 اول يه بار مياد پايين URl رو ميخونه بعد خودش يه مرتبه ديگه ميره بالا
و اون چيزي که ميخواي رو load ميکنه
اگه دستور trace رو جابه جا بزني ميبيني که undifined ميزنه
که با جابخجايي خطوط مشکل حل ميشه
به نظرم راحت ترين راه واسه تو فعلا اينه که کل کار بره تو يه onEbnterFrame
ولي اگه بازم مشکلي بود در خدمتم
از سفيرم ببسيلز ممنونم
 

kiarash.M

Active Member
اه سفير که جواب داده اين صفحه تو Brwser من ofline مونده بود
دي:
راس ميگه ديگه براي تو حلقه کار ميکنه من اون حلقه رو نديدم گفتم onEnterFrame کن
d:
شب خوش
 

padideh

Member
سلام

ديدي گفتم مشكل از جاي ديگه هست(بي سوادي)
ممنون rollover رو فهميد اما بازم يه مشكل
اون for رو تا آخر ميره و وقتي تموم ميشه مقدار b ثابت ميشه
و....
هميشه مقدار _root["cam"+b] هست camy1 :cry:
 

padideh

Member
سلام

هووووووووووورررررررررررراااااااااااااااااااااااااا:idea::mrgreen::lol:
كار كرد:D
kiarash.M و safir187 عزيز واقعا از لطفتون ممنونم
فايل نهايي رو ميذارم اگه كس ديگه اي هم اين مشكل رو داشت نخواد خيلي وقت بذاره
PHP:
var a:Number = 1;
var target_mc:MovieClip = this.createEmptyMovieClip("target_mc", 1000);
var moviexp:MovieClip = this.createEmptyMovieClip("moviexp", 1001);
var cmt_file:MovieClip = this.createEmptyMovieClip("cmt_file", 1002);
loadVariables("y.txt", target_mc);
loadVariables("x.txt", moviexp);
loadVariables("comment.txt", cmt_file);
function checkParamsLoaded() {
	if (moviexp.y1 == undefined) {
		trace("not yet.");
	} else {
		for (b in moviexp) {
			duplicateMovieClip("cam", "cam"+b, a);
			_root["cam"+b]._y = target_mc[b];
			_root["cam"+b]._x = moviexp[b];
			_root['cam'+b].onRollOver = function() {
				_root['cam'+b].Comments = cmt_file[this._name];
				trace(_root['cam'+b].Comments);
			};
			a++;
		}
		clearInterval(param_interval);
	}
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);
نكته ماجرا تو اون this._name بود
البته يه تغيير كوچيك هم تو فايل txt ه مربوط به cmt_file دادم به جاي y1=ali نوشتمcamy1=ali
به اميد گفتار بعدي :D
[size=+3]يا علي[/size]
 

kiarash.M

Active Member
ديدي بهت گفتم
کليت کارت مشکل نداشت مشکل تو RUn برنامه بود ..
موفق باشي
 

kiarash.M

Active Member
راستي بهتر بود از As2 استفاده ميکردي
الان که 3 هم اومده
ولي نميدونم چرا بعضيا 1 رو به همه چي ترجيح ميدن
راستي ميتوني همه 3 تا فايلو يکي کني با يه
LoadVars
راحت کار کني
 

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

بالا