سؤال

وأنا لا أستطيع الحصول على هذا العمل في تطبيق AS1 بلدي. أنا باستخدام طريقة Color.setTransform.

وأنا تصحيح في التفكير في إنشاء كائن التالية ينبغي أن يؤدي إلى تحويل لون لأبيض؟

وفار AColorTransform = {را: 100، م ع: 255، جا: 100، GB: 255، با: 100، ب: 255، أأ: 100، أساسها: 255}؛

وهذا واحد لأسود؟

وAColorTransform = {را: 100، م ع: -255، الجا: 100، GB: -255 والحان: 100، ب: -255، أأ: 100، أساسها: -255}؛

وقرأت على بعض المواقع التي تدعو setRGB أو setTransform قد لا يؤدي إلى تغيير في الواقع لون العرض عند الكائن الذي كنت أداء العملية على ديها نوع من السلوك الديناميكي. لا أحد يعرف المزيد عن هذه الحالات؟ وكيفية تغيير اللون تحت كل الظروف؟

والتحيات.

هل كانت مفيدة؟

المحلول

ومضى وقت طويل منذ لقد كان لفعل أي شيء هو AS1، ولكنني سوف أبذل قصارى جهدي.

والرمز الأساسي لcolor.setTransform () يشبه هذا ...

var AColorTransform = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:255};
var myColor = new Color(mc);
myColor.setTransform(AColorTransform);

... حيث مولودية هو مقطع فيلم على المسرح في مكان ما.

وتذكر أنك كنت تسأل عن تحويل ، الذي يهدف بطبيعته لتحويل الألوان <م> من ما هي عليه <م> إلى شيء آخر. إذا كنت تريد أن ترسم بشكل صحيح في لون معين (مثل الأسود أو الأبيض)، وكنت عادة أفضل بكثير من استخدام setRGB، التي من شأنها أن تبدو مثل هذا:

var myColor = new Color(mc);
//set to black
myColor.setRGB(0x000000);
//or set to white
myColor.setRGB(0xFFFFFF);

وهذه العمل بشكل موثوق، على الرغم من يمكن أن يكون هناك بعض gotchas. عموما، فقط تذكر أن يتم إرفاق اللون على مقطع فيلم معين ... حتى إذا انخفض أن مقطع فيلم خارج النطاق (أي أنه يختفي من الوقت الخط) سيتم حذف ونك معها.


وقراءة أخرى إلا إذا أردت أن تفهم وتحول لون أفضل:

ودعونا ننظر إلى مكونات هذا اللون تحويل.

    a (multiplier 0 > 100%)   b(offset -255 > 255)
r       ra                       rb

g       ga                       gb

b       ba                       bb

a       aa                       bb

وهناك أربع قنوات (ص، ز، ب، أ). الثلاثة الأولى هي للأحمر والأخضر والأزرق، وآخر واحد ألفا (الشفافية). كل قناة لديها "أ" عنصر وعنصر 'ب'، وبالتالي را، م ع، GA، GB، وما إلى ذلك "أ" المكون نسبة مضاعف. وهذا يعني أنه سوف تتضاعف أي قناة موجودة من قبل في المئة في تلك القيمة. المكون 'ب' هو إزاحة. حتى "را" يضاعف القناة الحمراء الموجودة. "RB" تعوض ذلك. إذا بدأت القناة الحمراء ك "FF" (الكامل على أحمر)، ووضع را: 100 لن يكون لها تأثير، منذ بضرب FF بنسبة 100٪ النتائج في أي تغيير. وبالمثل، إذا يبدأ الحمراء في '00' (أي الأحمر على الإطلاق)، لا قيمة 'را' سوف يكون له أي تأثير، لأن (إذا كنت أذكر شكسبير الخاص بك) مرتين لا شيء لا شيء حتى الآن. فإن الأمور في الفترات الفاصلة بين تتكاثر كما كنت تتوقع.

وأضاف

والمنحنيات بعد الضرب. حتى تتمكن من ضرب من قبل بعض القيمة، ثم يقابل ذلك:

r (result red color) = (RR * ra%) + rb
g (result green color) = (GG * ga%) + gb
b (result blue color) = (BB * ba%) + bb
a (result alpha) = (AA * aa%) + ab

وعلى سبيل المثال: RR = 128 (عرافة 0x80)، را = 50 (50٪ أو 0.5)، م ع = -20

والناتج القناة الحمراء: (128 * 0.5) + (-20) = 44 (ست عشري 0x2C)

وبصراحة، كل هذا يحصل مربكة لدرجة أنني تميل إلى تفضيل التعقل بسيطة لتجنب التحويلات تماما وتذهب مع أبسط من ذلك بكثير setRGB ().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top