نمایش نتایج 1 تا 13 از 13

نام تاپیک: طراحی نوار منوی متحرک بدون وقفه

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51

    طراحی نوار منوی متحرک بدون وقفه

    سلام!

    من یک صفحه فلش طراحی کردم که دارای منوی متحرک می باشد . اندازه این نوار منو که در فتوشاب طراحی کردم و به فلش منتقل کردم 160cm می باشد . در ابتدا 250 فریم درفلش در نظر گرفتم اما این نوار با وقفه اجرا می شد (یعنی زمانیکه از یک فریم به یک فریم دیگر می خواهد برود در چند صدم ثانیه یک وقفه ایجاد می شود) افزایش سرعت هم کمکی به من نکرد چون اطلاعات ناخوانا می شد. من تعداد فریم ها را تا 1000 افزایش دادم یعنی 1250 فریم شد .مقدار وقفه ها کم شد اما به طور کامل از بین نرفت من حتی تا 5000 فریم هم افزایش دادم و سرعت هم زیاد کردم اما باز هم مشکل من رفع نشد . لطفا" راهنمایی کنید چگونه می توان وقفه بین فریم ها را از بین ببرم و نوار منوی من به صورت روان به حرکت درآید ؟

    متشکرم

  2. #2
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    دقیقا متوجه موضوع نشدم !!! چطور وقفه ای ؟؟؟

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام!
    منظور من این بود که این نوار به صورت روان از راست به چپ حرکت نمی کند .وقتی به صفحه نمایش نگاه می کنین حرکت آن را و توقف چند صدم ثانیه ای آن را می توانید تشخیص می دهید .
    در ضمن باید بگویم که با کاهش و یا افزایش سرعت این مشکل حل نمی گردد .

    مثال: حالت روان : ---------------
    حالت همراه با وقفه : ---- ---- ---- ----

    در ضمن می خواستم ببینم راهی وجود دارد که در وسط راه مسیر حرکت نوار که از سمت راست به چپ می باشد ، با یک کلیک از سمت چپ به راست حرکت کند .

    متشکرم

  4. #4
    کاربر تازه وارد آواتار Noob-Saibot
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    تهران
    پست
    95
    با سلام به تو.
    می تونی یه کار بکنی. این جور که من فهمیدم در حرکت یه خورده مشکل داری. تمام حرکت ها رو پاک کن و از اول بساز. درست می شه. ( فکر کنم البته ولی امتحان کن ). خبرش رو به من هم بده.
    آخرین ویرایش به وسیله Noob-Saibot : چهارشنبه 17 خرداد 1385 در 15:37 عصر

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    فایده ندارد من بارها این کاررا کردم ولی نتوانستم آن را درست کنم .
    لطفا در صورت امکان سایت زیر را ببینید و بگویید چطوری یک نوار ابزار مثل آن درست کنم .
    http://www.dynamicfactory.us/xmlswf/...ne3/index.html

    ممنون

  6. #6
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    طراحی یه چیزی توی مایه های همون سایتی که گفتی بسیار ساده است ...
    کمی صبر کنی یک مثال آماده و ضمیمه می کنم ...

    یا حق ...

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام !

    من به راهنمایی شما هر چه سریعتر نیاز دارم .

  8. #8
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    پس ببین این بدردت می خوره تا یک مثال ضمیمه کنم ...

    stop ();
    move = true;
    pY = 180;
    amount = 14;
    pDist = 15;
    pWidth = 150;
    totalWidth = amount * pWidth + (amount - 1) * pDist;
    leftPoint = -(totalwidth - 550) / 2;
    rightPoint = 550 + (totalwidth - 550) / 2;
    for (i = 1; i <= amount; i++)
    {
    var ins = _root["p" + i];
    ins._x = leftpoint + i * (pWidth + pDist);
    ins._y = pY;
    } // end of for

    _root.rollSpeed = 0;
    _root.tarSpeed = 1;
    baseAcc = 0.600000;
    onEnterFrame = function() {
    if (_root.move){
    _root.tarSpeed = -Math.round((_root._xmouse - 275) / 27);
    acceleration = baseAcc - _root.rollSpeed / 20;
    if (_root.rollSpeed > _root.tarSpeed)
    {
    _root.rollSpeed = _root.rollSpeed - acceleration;
    } // end if
    if (_root.rollSpeed < _root.tarSpeed)
    {
    _root.rollSpeed = _root.rollSpeed + acceleration;
    } // end if
    for (i = 1; i <= _root.amount; i++)
    {
    var instance = _root["p" + i];
    instance._x = instance._x + _root.rollSpeed;
    if (instance._x < _root.leftPoint)
    {
    var dif = _root.leftPoint - instance._x;
    instance._x = _root.rightPoint - dif;
    continue;
    } // end if
    if (instance._x > _root.rightPoint)
    {
    var dif = instance._x - _root.rightPoint;
    instance._x = _root.leftPoint + dif;
    } // end if
    } // end of for
    }
    }


    یا حق ...

  9. #9
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    اینم نونه که ضمیمه کردم ...

    موفق باشید ، یا حق ...
    فایل های ضمیمه فایل های ضمیمه

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام !

    واقعا" بی نظیر بود . برنامه شما بدست من رسید فقط layer3 خالی بود . من برای برنامه خودم برای نوار ابزار 1250 فریم گرفته ام . با توجه به این برنامه اصلا" لازم به گرفتن این تعداد فریم هست . در صورت منفی بودن جواب چند فریم می توانم بگیرم .

    در ضمن a داخل برنامه با نام لایه که همان a می باشد یکی است.
    میشه لطف کنین یک بار دیگر برنامه را برای من به صورت کامل با تمام لایه ها بفرستید . چون من نتوانستم از داخل برنامه آن را اجرا نمایم.
    در صورت امکان ممکن است لطف کنید و توضیح کوچکی در مورد کدهای برنمه ای که نوشتید بدهید
    متشکرم
    آخرین ویرایش به وسیله kathy11ir : شنبه 20 خرداد 1385 در 07:30 صبح

  11. #11
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125

    stop();

    for (a=1 ;a<=50; a++) {
    var tmp:MovieClip = _root.attachMovie('mc_tmp', 'sx_new'+a, '10'+a);
    tmp.txt.text = a;
    tmp.onEnterFrame = function () {
    if (hitTest(_root._xmouse, _root._ymouse, true)) {
    moveme = false;
    } else {
    moveme = true;
    }
    }
    }

    setrndmask(_root, 500, 400, 0, 0, 0);

    var mc_tmp:MovieClip = _root.createEmptyMovieClip('temp_movieclip', _root.getNextHighestDepth());

    count = 50;
    a_dist = 15;
    a_width = 90;
    t_width = (count * a_width) + ((count-1) * a_dist);
    l_point = -(t_width - 500) / 2;
    r_point = 500 + (t_width-500) / 2;

    roll_spd = 0;
    tar_spd = 1;
    base_acc = 0.500000;

    moveme = true;

    for (i = 1; i<=count; i++) {
    var ins = _root['sx_new' + i];
    ins._x = l_point + i * (a_width + a_dist);
    ins._y = 200;
    }

    mc_tmp.onEnterFrame = function () {
    if (moveme) {
    tar_spd = -(Math.round((_root._xmouse - 250) / 25));
    acceleration = base_acc - roll_spd / 20;
    if (roll_spd > tar_spd) {
    roll_spd = roll_spd - acceleration;
    }
    if (roll_spd < tar_spd) {
    roll_spd = roll_spd + acceleration;
    }
    for (i=1; i<=count; i++) {
    var ins:MovieClip = _root['sx_new' + i];
    ins._x = ins._x + roll_spd;
    if (ins._x < l_point) {
    diffy = l_point - ins._x;
    ins._x = r_point - diffy;
    continue;
    }
    if (ins._x > r_point) {
    diffy = ins._x - r_point;
    ins._x = l_point + diffy;
    }
    }
    }
    // trace(tar_spd+' '+acceleration+' '+roll_spd);
    }

    function setrndmask(mcname, w, h, x, y, rnd){
    var ins = mcname.createEmptyMovieClip("masking",10);
    with(ins){
    beginFill(0x000000);
    moveTo(x,y);
    lineTo(w-rnd,y);
    curveTo(w,y,w,y+rnd);
    lineTo(w,h-rnd);
    curveTo(w,h,w-rnd,h);
    lineTo(x+rnd,h);
    curveTo(x,h,x,h-rnd);
    lineTo(x,y+rnd);
    curveTo(x,y,x+rnd,y);
    endFill();
    }
    mcname.setMask(ins);
    }

    در ابتدا باید بگم که در فایل ضمیمه لایه 3 یک لایه اضافی است ...

    1. تعداد فریم مورد نیاز 1 ، به این قسمت کد دقت کنید movie متوقف شده است ...
    stop();


    2. اگر منظور شما a داخل کد است هیچ ربطی بین نام لایه و حروف داخل کد وجود ندارد.

    3. نهوه کار کد :
    آبجکت ها بداخل صفحه اضافه می شوند

    for (a=1 ;a<=50; a++) {
    var tmp:MovieClip = _root.attachMovie('mc_tmp', 'sx_new'+a, '10'+a);
    ...


    شما یکسری آبجکت دارید که باید به ترتیب با فاصله های معین قرار گیرند

    for (i = 1; i<=count; i++) {
    var ins = _root['sx_new' + i];
    ins._x = l_point + i * (a_width + a_dist);
    ins._y = 200;
    }


    حالا همه چیز آماده است تا آبجکتها حرکت کنند
    با عددی که به نسبت موقعیت موس در صفحه بدست می آید آنها را به راست و یا چپ حرکت می دهیم

    ...
    tar_spd = -(Math.round((_root._xmouse - 250) / 25));
    ...


    هیچ کد و یا فایل اضافه ای هم برای ساخت یک نمومه دیگر لازم نیست !!!

    موفق باشید ، یا حق ...

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    51
    سلام

    می خواستم ببینم که 'sx_new' و 'mc_tmp' آیا obgect هستند . اگر این طور است در کجا ایجاد شده و قرار می گیرند . در ضمن تعداد فریم ها زیاد شود در یک برنامه مثلا" 3000 فریم . آیا بر سرعت برنامه تاثیر می گذارد .

    من در این برنامه خودم از 2000 فریم استفاده کردم اما شما بایک فریم آن کار را انجام دادید .از راهنمایی های شما مچکرم . معلوم می شود که شما یک برنامه نویس حرفه ای در این زمینه هستید ، میشه لطف کنید و من را راهنمایی کنید که برای افزایش اطلاعات خود در زمینه کد نویسی در فلش باید از چه کتابها و سایتهایی استفاده کنم . من در فهمیدن کدها مشکل دارم . باید ابتدا آنها را درک کنم تا بتوانم بعدا" از آنها استفاده کنم.

    متشکرم

  13. #13
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    1. 'sx_new' و 'mc_tmp' ایندو فقط اسم هستند ... اولی از روی دومی ساخته شده و دومی در کتابخانه فایل می باشد ...
    2. تعداد فریم ریت ( Frame Rate ) کلیپ فلش فقط بر سرعت حرکت تاثیر خواهد داشت ...
    3. شما برای تسلط بر اسکریپت فلش از خود مرجع FlashActionScriptHelp داخل خود فلش موجود هست می توانید استفاده کنید ولی ابتدا باید Syntacx کد نویسی را بخوبی فرا بگیرید ( که به JavaScirpt بسیار شبیه است ).

    موفق باشید ، یا حق ...

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •