سوال از بچه های متخصص(تغییر رنگ)

hgaconnect

New Member
سلام
برنامه ای با فلش می خوام درست کنم که رنگ اشیا در محیط رو با کلیک روی آن تغییر بدم( مثلا رنگ قوری)

در محیط photoshop با استفاده از حالت hue در blending لایه ها این کار رو میشه انجام داد و در فلش در blending لایه ها امکان hue وجود ندارد.

از دوستان متخصص اکشن نویسی و ... سوال دارم که آیا می شه کاری کرد که در محیط فلش رنگ یک لایه را(مثلا قوری) را به صورت hue تغییر داد(مثلا رنگ قوری رو از سبز به زرد تبدیل کرد.)
 

sharktech

کاربر فعال
برای این کار شما باید یک شکل وکتوری هم شکل با شی اصلی بکشین و زیر شی اصلی قرار بدین و شفافیت اون شی اصلی رو یکم کم کنید و توسط as رنگ اونو عوض کنید. کدش هم فکر کنم اینطوری بود:

کد:
movie_clip.setRGB(0x00ff00);

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

smmousazadeh

Well-Known Member
اگه شکل شما چند تیکه است( مثلا میخاید بازی رنگ آمیزی رو درست کنید) میتونید اون رو به چند مووی کلیپ تبدیل کنید و تیکه ها رو طوری کنار هم بزارید که مثل شکل اولیه بشه یا اینکه شکل گرافیکی رو در یک لایه زیر مووی کلیپها تون بزارید و بعدش کد رو به مووی کلیپی بدید که روش کلیک شده
 

Mr. LonelY

کاربر فعال
در فلش گزینه hue وجود داره!
شما اول باید شی رو به ب مووی کلیپ تبدیل کنی و از قسمت filters، فیلتر Adjustcolor رو بهش اضافه کنی!
 

++Hadi++

Active Member
سلام
اينا رو واسه اکشن 3 مي نويسم .
دو تا راه داري :
1- حالت Fill :
اگه فلش هاي نقاشي و رنگ آميزي رو داده باشي ، رنگو انتخاب مي کني و روي تيکه هاي نقاشي کليک مي کني و اون تيکه رنگ مي شه .
خوب کافيه در اين مورد بياي و تيکه هاي مساحتي نقاشي رو يا با ابزار فلش بکشي و يا با خط کشي ، اونا رو از هم تفکيک کني (وکتور ) و هر تيکه رو يه يه مووي کليپ تبديل کني و ColorTransform هر تيکه رو تعيين کني :
2- روش فيلتر adjustment با دستورات اکشن :
کلا فرض کن MC1 مووي کليپ سمت راستي و MC2 مووي کليپ وسطي و MC3 مووي کليپ سمت چپي هست ، پس :
PHP:
import flash.geom.ColorTransform;//ورود کلاس تغيير رنگ ها
var myElements_array1:Array = [1, 0, 0, 0, 19,
    0, 1, 0, 0, 100,
    0, 0, 1, 0, -43,
    0, 0, 0, 1, 4];//تعيين  آرايه ماتريس جابجايي رنگها
var myColorMatrix_filter1:ColorMatrixFilter = new ColorMatrixFilter(myElements_array1);
//ساخت شي تعيين رنگ اول و قرار دادن آرايه ماتريس در آن

var myElements_array2:Array = [1, 0, 0, 0, 0,
    0, 1, 0, 0, 0,
    0, 0, 1, 0, 0,
    0, 0, 0, 1, 0];//تعيين  آرايه ماتريس جابجايي رنگها دوم
var myColorMatrix_filter2:ColorMatrixFilter = new ColorMatrixFilter(myElements_array2);
//ساخت شي تعيين رنگ دوم و قرار دادن آرايه ماتريس در آن
addEventListener(Event.ENTER_FRAME,ChangeTheColor);//تابع تغيير رنگ ها در شي سمت راست
MC2.addEventListener(MouseEvent.MOUSE_OVER,OverFunctiom);//تابع اجرايي در حالت لمس شي وسط
MC2.addEventListener(MouseEvent.MOUSE_OUT,OutFunctiom);//تابع اجرايي در حالت رهايي موس از شي وسط
//.......................................شي سمت چپ
MC3.transform.colorTransform = new ColorTransform(1,0,0,1,200,0,25,100);//تغيير رنگ مووي کليپ سمت چپي
//چهار پارامتر سمت چپ بين 0 و 1 انتخاب شده و فقط براي تعيين  به ترتيب از چپ مربوط به قرمز و سبز و آبي و آلفا هستند .
//چهار پارامتر سمت راست مربوط به آفست به ترتيب از چپ به راست ، قرمز و سبز و ابي و الفا هستند  و اعداد بين 0 تا 255 را شامل مي شوند .
//....................................................
function OverFunctiom(evt:MouseEvent):void//تابع لمس شي وسط
{
     MC2.filters = [myColorMatrix_filter1];//اختصاص فيلتر اول به شي وسط
}
function OutFunctiom(evt:MouseEvent):void//تابع رهايي از لمس شي وسط
{
     MC2.filters = [];//فيلتر خالي
}
function ChangeTheColor(evt:Event):void//تابع اجرايي لحظه لحظه اي براي تغيير رنگ در شي سمت راست
{
    myElements_array2[0]=Math.floor(Math.random()*2);
    myElements_array2[1]=Math.floor(Math.random()*2);
    myElements_array2[2]=Math.floor(Math.random()*2);
    myElements_array2[3]=Math.floor(Math.random()*2);
    myElements_array2[5]=Math.floor(Math.random()*2);
    myElements_array2[6]=Math.floor(Math.random()*2);
    myElements_array2[7]=Math.floor(Math.random()*2);
    myElements_array2[8]=Math.floor(Math.random()*2);
    myElements_array2[10]=Math.floor(Math.random()*2);
    myElements_array2[11]=Math.floor(Math.random()*2);
    myElements_array2[12]=Math.floor(Math.random()*2);
    myElements_array2[13]=Math.floor(Math.random()*2);
    myElements_array2[15]=Math.floor(Math.random()*2);
    myElements_array2[16]=Math.floor(Math.random()*2);
    myElements_array2[17]=Math.floor(Math.random()*2);
    myElements_array2[18]=Math.floor(Math.random()*2);
    myElements_array2[4]++;
    myElements_array2[9]++;
    myElements_array2[14]++;
    myElements_array2[19]++;
    if(myElements_array2[4] == 100)
    {
        myElements_array2[4] = -100;
        myElements_array2[14] = -100;
        myElements_array2[9] = -100;
        myElements_array2[19] = -100;
    }
    myColorMatrix_filter2.matrix=myElements_array2;
    MC1.filters = [myColorMatrix_filter2];
}
مثالو دان کن ...
البته گراديانت هم مي شه تعيين کرد ولي چون حوصله اون از اين بحث خارجه بهتره از سايتاي خارجي و از help فلش کمک بگيري...
باي...
 

پیوست ها

  • ColorTransform in AS3.rar
    8.2 کیلوبایت · بازدیدها: 120
آخرین ویرایش:

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

بالا