JSFL: حذف جميع السكتات الدماغية التي تتطابق مع لون معين؟

StackOverflow https://stackoverflow.com/questions/3169305

  •  02-10-2019
  •  | 
  •  

سؤال

أنا أبحث عن وظيفة JSFL يمكنها تحديد جميع العناصر على إطار وحذف جميع السكتات الدماغية التي تتطابق مع لون معين مثل #0000FF

في الأساس أقوم بإجراء الكثير من الملاحظات باستخدام أداة القلم الرصاص باستخدام ضربات قلم رصاص حمراء. ولكن عندما انتهيت ، أريد فقط أن أخبر Flash بحذف جميع Stokes الحمراء من الشاشة وترك كل شيء آخر سليمة. أي حلول لهذا؟

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

المحلول

سؤال جيد !

عند النظر إلى كائن المستند في مستندات JSFL ، أرى أن الطريقة الوحيدة لاسترداد السكتة الدماغية هي من خلال المستند. GetCustomstroke () المزعج. من الناحية المثالية ، سيخزن كائن الشكل السكتة الدماغية ويملأ المعلومات ، لكنه لا :(

حاولت التحكم في التحديد باستخدام المصفوفات:

var doc = fl.getDocumentDOM();
doc.selectAll();
var s = new Array().concat(doc.selection);
var sl = s.length;
doc.selectNone();

for(var i = 0; i < sl ; i++){
   doc.selection = s[i];
   stroke = doc.getCustomStroke('selection')
   fl.trace(stroke.color)
}

هذا لم ينجح.

ثم حاولت تحديد كل كائن باستخدام

doc.mouseClick({x:s[i].x, y:s[i].y}, false, false);

ولكن هذا ليس مفيدًا للغاية لأن الملاحظات يمكن أن تأخذ أي شكل ، لذلك قد تكون النقر في الزاوية اليسرى أعلى الملاحظة بمثابة اختيار مفقود. لن ينجح الحلق عبر كل بكسل لمجرد الحصول على اختيار.

الإجابة المختصرة ليست لأن الطريقة الوحيدة لاسترداد لون السكتة الدماغية هي من خلال اختيار المستند.

هناك بعض الحلول:

  1. في IDE ، استخدم البحث واستبدل ، واختر اللون بدلاً من النص واستبدل لون الملاحظة بشفافية. لسوء الحظ ، هذا ليس حلًا كبيرًا. سوف يخفي فقط الملاحظات ، وليس حذفها.flash find and replace
    (مصدر: sonic.net)

  2. اجعل من السهل الحصول على الملاحظات من JSFL: ضع جميع الملاحظات في الجدول الزمني الحالي في طبقة واحدة وإعطائها اسمًا موحيًا ، على سبيل المثال "notes" ، ثم احذف تلك الطبقة.

على سبيل المثال

var doc = fl.getDocumentDOM();
if(!doc) alert('Pardon me! There is no document open to work with.');

fl.trace(deleteLayerByName('_notes'))

/*Returns true if the layer was found and deleted, otherwise returns false*/
function deleteLayerByName(name){
    var timeline  = doc.getTimeline();
    var frame     = timeline.currentFrame;
    var layers    = timeline.layers;
    var layersNum = layers.length;
    for(var i = 0 ; i < layersNum; i++){
        if(layers[i].name == name){
            timeline.deleteLayer(i)
            return true;
        }
    }
    return false;
}

نأمل أن يتمكن شخص ما من توفير اختراق لطيف لاختيار الكائنات حسب اللون في JSFL. هناك عدد قليل من الأشياء التي يمكنك القيام بها في IDE ، ولكن لا يمكنهم فعلهم من JSFL :(

HTH

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