Not sure if you would get something readily available but I have implemented such requirement and can help you go in right direction.
At high level:
Use a custom announcement list (with custom Announcement) or use existing announcement list to store the announcements in a list.
Configure a Content Query Web Part to display the announcements. Here you can configure how many announcements to be displayed, filter out expired announcements, implement custom styles to display your announcement, target announcements to specific audience etc. (leverage CQWP as much as you can)
Once you are done, you will have announcements displayed as:
<div id=".." style="..">
<!-- Announcement 1 content driven by your CQWP item style -->
<div>
<div id=".." style="..">
<!-- Announcement 1 content driven by your CQWP item style -->
<div>
<div id=".." style="..">
<!-- Announcement 1 content driven by your CQWP item style -->
<div>
Wrap the entire CQWP inside a container like:
<div id="announcementContainer">
<!-- Announcement items rendered using CQWP -->
</div>
- Now use a Jquery Cycle Plugin to rotate the announcement. Using this plug-in is extremly easy (could be as little as one line as shown below). You can also have "Prev", "Next" instead of automatic timer based rotation. Plugin and examples are available here: http://jquery.malsup.com/cycle/download.html
<script>
$(function () {
$('#announcementContainer').cycle();
});
</script>
Note that plugin simply hides all children (one div element for one announcement) and rotates them one by one.
Finally, you can wrap the whole functionality inside a Web Part using WebPart development skills (not covered here).