سؤال

ولدي سؤال الأساسية بدلا من ذلك. لدي العديد من (5) صور UIImageView على شاشتي. عند النقر على زر، أريد تغيير كل صورة إلى شيء آخر. وأريد أيضا أن تلعب الصوت كما يتم تغيير كل صورة.

وهكذا أريد أساسا صوت النقر حيث أن كل التغييرات الصورة.

والمشكلة هي، لسبب ما إذا كان لدي نقول 5 صور،
الصوت يحصل على لعب 5 مرات أولا وتغيير ثم الصور.

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

وكيف يمكنني "القوة" لتحديث الصور في أقرب وقت كما كنت اقول انه ما صورة للعرض؟

وأنا جديدة على اي فون / ماك ورلد، حتى يذهب من السهل على لي: -)

وريك

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

المحلول

<اقتباس فقرة>   

وانها مثل الصور تحديث فقط عندما يذهب التحكم إلى المستخدم لإدخال.

وهذا هو بالضبط ما يحدث. يتم تحديث واجهة المستخدم على الترابط الرئيسي حتى لا تحدث التحديثات في حين التعليمات البرمجية قيد التشغيل.

في سبيل تحقيق ما تريد، وأنت تسير في حاجة إلى توقيت. نلقي نظرة على وثائق NSTimer. تحتاج إلى إنشاء جهاز ضبط الوقت الذي يطلق طريقة لتغيير الصورة الثانية الخاصة بك ومن ثم requeue جهاز توقيت لتغيير الصورة الثالثة الخاصة بك. وهناك طريقة مريحة لإنشاء جهاز توقيت مثل تحتاج: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage2:) userInfo:nil repeats:NO];

وبعد ذلك، لديك أسلوب:

- (void) updateImage2(NSTimer*)theTimer
{

     //Update image 2 here
     // play sound 2 here

    [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage3:) userInfo:nil repeats:NO];
}

وسأترك لكم لتنفيذ أسلوب updateImage3 :؛ -)

وتشغيل التحديثات مثل هذا يعطي مؤشر الترابط الرئيسي فرصة لتحديث واجهة المستخدم.

نصائح أخرى

إذا كنت تبحث عن وسيلة لتحديث UIImageView دوريا، يمكنك الرجوع إلى ما يلي: http://www.shanison.com/2010/12/ 25 / uiimageview الحمل النائية صورة /

وهذا يبدو وكأنه كنت على الارجح تحميل الصور من الشبكة أو القرص بينما يلعب الصوت بشكل غير متزامن. ربما كنت تستخدم AudioServicesPlaySystemSound جنبا إلى جنب مع UIImage +imageWithContentsOfURL:؟ ان تحميل الصورة الفعلية ورمز اللعب السليم أن يكون مفيدا للغاية هنا.

وهذا عمل بالنسبة لي، عندما كنت أرغب في تغيير uiimageview الخلفية وتجديد ذلك، ومتابعة تنفيذ التعليمات البرمجية بعد ما يلي:

-(void)imgTapped_event:(UIImageView*)imgViewTapped
{
     imgViewTapped.backgroundColor=[UIColor whiteColor];

     //let the system update ui changes
     [NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];

     //continue your code execution, play sounds etc...

     //my helper method to play sound
     [self playSound:@"goodAnswer" sync:YES loops:0]; 
 }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top