سؤال

أرغب في اجتياز مجموعة من السلاسل إلى البرنامج المساعد NPAPI. كيف أتحول npvariant. إلى مجموعة من السلاسل؟

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

المحلول

يبدو أنك تسير في Dearetction الآخر من ما اقترحه Jldupont. عند تمرير صفيف كمعلمات إما خاصية أو طريقة:

var arrayData = [1,2,3,4,5];
plugin.someProperty = arrayData;
// -or-
plugin.callSomeMethod(arrayData);

ستصل هذه المعلمة إلى NPOBJECT الخاص بك باعتبارها npvariant من النوع npvarianttype_object. يمكنك بعد ذلك استعلام عن خاصية الطول:

NPObject *inObject = val->value.objectValue;
NPVariant npvLength;
NPN_GetProperty(npp, inObject, NPN_GetStringIdentifier("length"), &npvLength);

ثم يمكنك فقط القيام بحلقة للحصول على جميع القيم:

for (uint32_t i = 0; i < npvLength.value.intValue; i++) {
    NPVariant curValue;
    NPN_GetProperty(npp, inObject, NPN_GetIntIdentifier(i), &curValue);
    // Do something with curValue
}

وبالمثل، إذا كنت بحاجة إلى إعادة صفيف إلى JavaScript، خيار آخر (بخلاف كتابة طريقة لمحاكاة كائن، كما اقترحت في مؤشر الترابط الذي يرتبطه jldupont المرتبط به) هو استخدام npn_getvalue للحصول على NPOBJECT لنافذة DOM، و ثم استدعاء "صفيف" على ذلك مع عدم وجود معلمات. سيؤدي ذلك إلى إرجاع كائن مجموعة JS فارغ (مثل NPOBJECT *). ثم تقوم فقط بحلقة من خلال العناصر التي تريد العودة إليها واستدعاءها "دفع" مع العنصر كأول المعلمة (والوحيد).

أتمنى أن يساعدك هذا

نصائح أخرى

يمكنك استخدام npobject (انظر هذا مسلك) ليكون بمثابة حاوية لأسلوتك (مثل كائن JS كثيرا var arrayOfString={...strings here...}.

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