A Flash Developer Resource Site

Here's the setup....

I have developed a silly little algorithm for simulating someone blinking their eyes. It's based on the average that a person blinks about 25 times per minute and have reduced it to that 60% of the time a person will blink once every 7-10 seconds and 40% of the time they'll blink every 1-6 seconds. However, I'm trying to figure out a few things and this it's driving me bonkers. It doesn't help, either, that I haven't touched ActionScript in a few years so I'm having to relearn almost everything.

The first, does anyone have any suggestions or improvements on my algorithm?

Secondly, what I've made depends on a sort of delay() function to pause a certain amount of time in between blinks. So when the algorithm chooses any number of seconds to "delay" when the figure in the drawing blinks his eyes, it will pause the execution of the code for that length of time. So far, I have not figured out a good way of doing this within a single frame and every single example I've found on the web to introduce delays assumes I'm executing more than one frame.

Thirdly, the script also simulates "blinking" by simple setting the alpha of the eyelids to zero and then back to 100%. During my tests though, without my algorithm in place and just a linear flashing going on, the eyelids just appear on all the time. I have confirmed that it's indeed cycling, but it's just cycling too fast for anyone to notice the effect. So once again, another delay or something is needed between the "on" and "off" states so someone can see the flashing going on. Help? Pretty please?

(If that jbum dude's around, I'd love to hear from you on this as I've seen some of the stellar answers you've already given in this stuff! )

Thanks.

- Victor

2. I have always used getTimer() function for that. It gives you number of milliseconds measured from the start of your movie.

First declare the variables:
code:
```
//set time
lastTime=getTimer();
//set delay
delay=int(60/25*1000);
//time to hold eyes closed
closedTime=50;
//current state of eyes is opened
eyesClosed=false;
}
```

Here the delay would be number of milliseconds between 2 blinks based on your "25 times per minute".

I have also set the time to hold eyes closed to 50 ms, you can change it to whatever looks real.

Make a function that will be called at each frame:
code:
```
_root.onEnterFrame = function () {
//get time from last check
timePassed=getTimer()-lastTime;
//if eyes are closed
if(eyesClosed){
if(timePassed>closedTime){
//hide eyelids mc
eyelids_mc._visible=false;
//get the time
lastTime=getTimer();
//set state of eyes
eyesClosed=false;
}
}else{
//see if it is time to close the eyes
if(timePassed>delay){
//set the state of eyes to closed
eyesClosed=true;
//show eyelids mc
eyelids_mc._visible=true;
//get the time
lastTime=getTimer();
}
}
}
```

The function basically measures time between last event (either eyes were closed or they were opened) and current moment. It then checks if enough time has passed to either close the eyes (>delay) or open them (>closedTime). If time is gone enough, it changes the state of eyes, hides/shows the mc and saves current time.

3. Actually... setInterval would be better in this case:

Code:
```var intervalID;

//calls the "blink" function after numSeconds from this function call
{
}

{
clearInterval(intervalID);
//blink again in 5 to 10 seconds
}```

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•

 » Home » Movies » Tutorials » Submissions » Board » Links » Reviews » Feedback » Gallery » Fonts » The Lounge » Sound Loops » Sound FX » About FK » Sitemap