changing border color of a slide image after clicking on it

haslinger.hans11 at gmail.com haslinger.hans11 at gmail.com
Fri Oct 18 09:15:18 UTC 2013


Hallo again David
 
I just want to be sure if the code:
 
Dim ExternalCausesSound As SlideSoundOut
         Set ExternalCausesSound = 
CSlideSoundOut(ExternalCausesSlide.States("Default").Objects("ExternalCausesSound"))   
(ExternalCausesSound is the Name of my SlideSound)
 
Dim NewBuffer As SoundBuffer
       Set NewBuffer = ExternalCausesSound.Buffers(1)
 
...leads to the correct Sound Buffer before I try something with 
SoundBuffer.Status.
 
 
At the Moment I am playing around with:
 
Select Case NewBuffer.Status
     Case ebBufferStatusStopped
         ... (some code that stops the "Sleep" or leads to the next Slide 
State)
 
 
I just want to know if I am on the right way or about to get lost 
completely.
 
Best regards
Hans
 
 

Am Donnerstag, 17. Oktober 2013 17:41:34 UTC+2 schrieb McFarlane, David:

> Hans, 
>
> I'm afraid you have lost me again.  But now you should have all the 
> pieces you need in order to do what you want, and you should be able 
> to puzzle it out yourself from here. 
>
> Best, 
> -- David McFarlane 
>
>
> At 10/17/2013 06:29 AM Thursday, haslinge... at gmail.com <javascript:>wrote: 
> >Hallo David 
> > 
> >Thank you for the advice with SoundBuffer.Status. 
> > 
> > 
> >Now here is my restatement of your specifications: 
> >- E-Prime simultaneously presents a visual stimulus (containing a number 
> >of target areas) and starts playing a sound. 
> >- The visual stimulus remains until, and only until, the sound the 
> >finishes playing. 
> >- The subject uses the mouse to respond by clicking target areas on the 
> >display, and when the subject clicks on a target area, the border of 
> >that area changes Color 
> > 
> > 
> >Yes, that is correct. 
> > 
> > 
> >I've tried to create a code with SoundBuffer.Status. But I am not 
> >sure if it is correct that way: 
> > 
> > 
> >Dim ExternalCausesSound As SlideSoundOut 
> >          Set ExternalCausesSound = 
> > 
> CSlideSoundOut(ExternalCausesSlide.States("Default").Objects("ExternalCausesSound")) 
>
> > 
> > 
> >Dim NewBuffer As SoundBuffer 
> >        Set NewBuffer = ExternalCausesSound.Buffers(1) 
> > 
> > 
> >Then i would try something like: 
> > 
> >If NewBuffer.Status = 0   Then   ..... 
> > 
> >,so if the Buffer.Status is "Stopped", the Sleep Timer would be 
> >stopped or the current SlideState would skip to the following State. 
> >(I've set the Sleep to something longer then the Duration of the Sound) 
> >So basically I would need a command which I could insert after 
> >"Then" to stop the Sleep time. 
> > 
> >Could I use  "hitObject.Clear"  for that? 
> > 
> > 
> >Best regards 
> >Hans 
> > 
> > 
> > 
> >I 
> > 
> > 
> >Am Mittwoch, 16. Oktober 2013 18:31:11 UTC+2 schrieb McFarlane, David: 
> >Hans, 
> > 
> >Ah, there's the confusion -- you referred to "SoundOut" when you meant 
> >"SlideSound".  SoundOut and SlideSound share a lot of properties, but 
> >they are two different things that are used in different ways.  You do 
> >not have a SoundOut in your Procedure, just a SlideSound as a sub-object 
> >of your Slide. 
> > 
> >Now here is my restatement of your specifications: 
> >- E-Prime simultaneously presents a visual stimulus (containing a number 
> >of target areas) and starts playing a sound. 
> >- The visual stimulus remains until, and only until, the sound the 
> >finishes playing. 
> >- The subject uses the mouse to respond by clicking target areas on the 
> >display, and when the subject clicks on a target area, the border of 
> >that area changes color. 
> > 
> >Now you are just stuck accomplishing that second objective.  For that, I 
> >think you need to use SoundBuffer.Status -- see that topic in the 
> >E-Basic Help facility.  You will also have to get access to the 
> >SoundBuffer object that plays your sound -- for that, just browse the 
> >related topics in the E-Basic Help facility, and/or look at 
> >sound-related code generated for you by E-Studio (that's how I figure 
> >all this stuff out, if I can do that then so can you :) ).  And of 
> >course, you may also always contact PST Support for help, see below. 
> > 
> >Best, 
> >----- 
> >David McFarlane 
> >E-Prime training online: 
> ><http://psychology.msu.edu/Workshops_Courses/eprime.aspx>
> http://psychology.msu.edu/Workshops_Courses/eprime.aspx 
> > 
> >Twitter:  @EPrimeMaster 
> >(<http://twitter.com/EPrimeMaster>twitter.com/EPrimeMaster) 
> > 
> >/----------- 
> >Stock reminder:  1) I do not work for PST.  2) PST's trained staff take 
> >any and all questions at 
> ><http://support.pstnet.com/e%2Dprime/support/login.asp>
> http://support.pstnet.com/e%2Dprime/support/login.asp 
> >, and they strive 
> >to respond to all requests in 24-48 hours -- this is pretty much their 
> >substitute for proper documentation, so make full use of it.  3) In 
> >addition, PST takes questions at their Facebook page 
> >(<
> http://www.facebook.com/pages/Psychology-Software-Tools-Inc/241802160683>
> http://www.facebook.com/pages/Psychology-Software-Tools-Inc/241802160683 
> > 
> >), and offers several instructional videos there and on their YouTube 
> >channel 
> >(<http://www.youtube.com/user/PSTNET>http://www.youtube.com/user/PSTNET 
> >) (no Twitter feed yet, 
> >though).  4) If you do get an answer from PST staff, please extend the 
> >courtesy of posting their reply back here for the sake of others. 
> >\----------- 
> > 
> > 
> >haslinge... at gmail.com wrote: 
> > > Hallo David 
> > > 
> > > Thank you for your help. 
> > > 
> > > 
> > >     At this point I would need you to draw 
> > > 
> > >     out a very clear diagram of your Procedure structure, along 
> > >     with clear specifications of what you want it to do 
> > > 
> > > 
> > > The Procedure looks  like this: 
> > > 
> > > 
> > > ... 
> > > ... 
> > > 
> > > ExternalCausesProc 
> > >       ExternalCausesList 
> > >            ExternalCausesTrialProc 
> > >                Instruction (TextBox) 
> > >                restart2 (Label) 
> > >                ExternalCausesSlide (Slide) 
> > >                InLine2 (InLineCode) 
> > > ... 
> > > ... 
> > > 
> > > 
> > > After a short Instruction, there is an Image presented on the 
> > > ExternalCausesSlide as a Stimulus (e.g. child is getting a birthday 
> > > present). 
> > > There is also a SoundOut on the ExternalCausesSlide which describes 
> the 
> > > scene in the Image. 
> > > Additionaly there are 4 smaller Images as possible answers for the 
> > > Stimulus Image. 
> > > I've made an attribute for every Image and the SoundOut in my 
> > > ExternalCausesList. 
> > > 
> > > Subjects should have time to click on one of the 4 target Images until 
> > > the SoundOut was played completely. 
> > > I want to highlight the Image a subject chooses by changing the border 
> > > color of that Image to "cyan" (black is my default border color) so 
> the 
> > > subject knows that its answer was registered and it can change the 
> > > current answer (this is another thing i could need some help with). 
> > > 
> > > I tried to implement the following code (which i've found somewhere in 
> > > this google group) for changing the border color to "cyan" and back to 
> > > "black" (default setting) before a new Stimulus is presented: 
> > > 
> > > Dim hitObject As SlideImage 
> > >    Set hitObject = 
> > > CSlideImage(ExternalCausesSlide.States("Default").Objects(strHit)) 
> > > 
> > >             hitObject.BorderColor = CColor("cyan") 
> > >             hitObject.Draw 
> > >             Sleep 5000 
> > > 
> > >       hitObject.BorderColor = CColor("black") 
> > > 
> > > 
> > > 
> > > The current slide should be terminated after the Sound is played so 
> I've 
> > > set  "End Sound Action" to "Terminate"    and "End Action" (in the 
> > > ExternalCausesSlide Properties) to "none". 
> > > Now the color changed to "cyan" after the Sound was played  and not 
> > > immediately after the click. 
> > > 
> > > So i've changed the Settings to "End Action" -> "Terminate" and 
> > > "EndSoundAction" -> "Terminate". 
> > > Now the color changed immediately after the click occured and remained 
> > > "Cyan" for 5sec before changing back to "black". 
> > > But if the click occured at the end of the SoundOut with less than 
> 5sec 
> > > remaining, there was an interference with the Sound of the following 
> > > Stimulus. 
> > > 
> > > Then I've tried "End Action" -> "Terminate" and "End Sound Action" -> 
> > > "none". 
> > > Now the Color changes immediately after the click and remains for the 
> 5 
> > > sec no matter if the Sound is completely played or not. 
> > > But if no click occurs, there is no termination. 
> > > 
> > > 
> > > Now I thought I could use the "Terminate/Terminate"-setting  and a 
> Sleep 
> > > time which is equal to the remaining duration of the sound file after 
> > > the click occured, (something like  Sleep "Duration Sound - RT (Time 
> > > until click?)). 
> > > This way, the slide would terminate after the click + Sleep time or if 
> > > the sound file was played completely (if there was no click). 
> > > There would also not be any interference with the following Sound 
> file, 
> > > because the Sleep time is never longer than the Sound file itself. 
> > > 
> > > 
> > > 
> > > 
> > >     That said, first, you do not understand your code correctly.  As 
> > >     written, it means the color of the image, which was clicked, 
> changes 
> > >     to "cyan" and would later change to "black" at whatever time your 
> > >     hitObject gets redrawn, and goodness knows when that will happen. 
> > > 
> > > 
> > > 
> > > Actually, it changes back to "black". 
> > > But maybe that is just because "black" ist my default border color and 
> > > the settings are just reset to the default settings after Sleep. 
> > > 
> > > 
> > > 
> > >     As a general strategy, I prefer to do as much as possible through 
> the 
> > >     program structure & object properties, and to leave less to 
> > inline code. 
> > > 
> > > 
> > > 
> > > Actually this was the prefered strategy for my project and it worked 
> > > fine except for strHitTest for collecting Mouse Responses and logging 
> > > the correct answer. 
> > > Basically my program is completed, but i would like to add some little 
> > > improvements, like this highlighting thing, to make it look better 
> > > 
> > > I hope my remarks are not too confusing. 
> > > 
> > > 
> > > Best regards 
> > > Hans 
> > > 
> > > 
> > > 
> > > Am Dienstag, 15. Oktober 2013 16:37:46 UTC+2 schrieb McFarlane, David: 
> > > 
> > >     Hans, 
> > > 
> > >     I am afraid that I do not quite follow all of this.  You refer to 
> a 
> > >     Slide, a SoundOut, and an Inline, and I do not know how they all 
> > >     interrelate (in particular, I do not recall the complication of a 
> > >     SoundOut in your first post).  At this point I would need you to 
> draw 
> > >     out a very clear diagram of your Procedure structure, along with 
> > >     clear specifications of what you want it to do. 
> > > 
> > >     That said, first, you do not understand your code correctly.  As 
> > >     written, it means the color of the image, which was clicked, 
> changes 
> > >     to "cyan" and would later change to "black" at whatever time your 
> > >     hitObject gets redrawn, and goodness knows when that will happen. 
>  If 
> > >     you want your inline code to make the BorderColor black, then you 
> > >     must also follow that line with another hitObject.Draw command, 
> which 
> > >     is missing from your code without comment.  If you left that out 
> on 
> > >     purpose (e.g., because the redraw will be taken care of by a later 
> > >     object), then you must add a comment to your code to explain that. 
> > > 
> > >     As far as settting the Sleep time to something like "remaining 
> time 
> > >     of SoundOut", I suppose you might use some combination of 
> Clock.Read, 
> > >     SoundOut.TargetOffsetTime, and GetNextTargetOnsetTime, but I think 
> > >     that a sloppy way to do things.  I would generally rather let the 
> > >     SoundOut handle the timing, and then follow that with more inline 
> > >     code to do whatever needs doing.  Again, we need a better look at 
> > >     your Procedure structure, you may need to revise it. 
> > > 
> > >     As a general strategy, I prefer to do as much as possible through 
> the 
> > >     program structure & object properties, and to leave less to inline 
> > >     code. 
> > > 
> > >     Regards, 
> > >     -- David McFarlane 
> > > 
> > > 
> > >     At 10/15/2013 04:56 AM Tuesday, haslinge... at gmail.com<javascript:> 
> > >     wrote: 
> > >      >Hallo David 
> > >      > 
> > >      > 
> > >      >I've tried another code for the changing border color part: 
> > >      > 
> > >      >Dim hitObject As SlideImage 
> > >      >Set hitObject = 
> > >     
>  >CSlideImage(ExternalCausesSlide.States("Default").Objects(strHit)) 
> > >      >   hitObject.BorderColor = CColor("cyan") 
> > >      >         hitObject.Draw 
> > >      >         Sleep 5000 
> > >      >   hitObject.BorderColor = CColor("black") 
> > >      > 
> > >      > 
> > >      >If I understood this code right, that means the color of the 
> > >      >image,which was clicked, changes to "cyan "and after 5 sec it 
> > >      >changes back to "black". 
> > >      > 
> > >      >But now I have some problems timing the change of color and the 
> > >     sound file. 
> > >      > 
> > >      >At first I set "End Action" in the Slide Properties to "(none)" 
> and 
> > >      >"End Sound Action" in the Slide Sound Out Properties to 
> "Terminate". 
> > >      >Then the color was only changing after the soundfile was over. 
> > >      > 
> > >      >Then I changed the settings to "End Action" -> Terminate and 
> added 
> > >      >"Sleep 5000" in the inline code. 
> > >      >Now the color changes immediately after clicking and stays for 
> the 
> > >      >5sec before changing back to black 
> > >      >But if the Sleep Time after clicking is longer then the 
> remaining 
> > >      >time of the SoundOut, the SoundOut of the next Slide State isn't 
> > >     starting. 
> > >      > 
> > >      >Is there any command which sets the Sleep time to something like 
> > >      >"remaining time of SoundOut"? 
> > >      > 
> > >      > 
> > >      >Best regards 
> > >      >Hans 
> > 
> >-- 
> >You received this message because you are subscribed to the Google 
> >Groups "E-Prime" group. 
> >To unsubscribe from this group and stop receiving emails from it, 
> >send an email to e-prime+u... at googlegroups.com <javascript:>. 
> >To post to this group, send email to e-p... at googlegroups.com<javascript:>. 
>
> >To view this discussion on the web visit 
> ><
> https://groups.google.com/d/msgid/e-prime/af93d00c-d985-43d7-897b-433e8d5f994f%40googlegroups.com
> >
> https://groups.google.com/d/msgid/e-prime/af93d00c-d985-43d7-897b-433e8d5f994f%40googlegroups.com. 
>
> >For more options, visit 
> ><https://groups.google.com/groups/opt_out>
> https://groups.google.com/groups/opt_out. 
>
>

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To unsubscribe from this group and stop receiving emails from it, send an email to e-prime+unsubscribe at googlegroups.com.
To post to this group, send email to e-prime at googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/e-prime/c59eade2-a635-4e48-8b07-f4e272f8222c%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.linguistlist.org/pipermail/eprime/attachments/20131018/70cea6c3/attachment.htm>


More information about the Eprime mailing list