How to setup grow/shrink behavior on a moving group?

SD project. Group consists of 18 evenly spaced SD video clips each individually sized to 40%. The group is positioned near the top of the screen at 100% size.
The group then marches smoothly across the screen by transforming position X over 36 seconds using linear interpolation.
I am trying to cause the group (10 seconds into the timeline) to smoothly increase in size by applying a grow/shrink behavior over 3 seconds while continuing the X transform.
Position Y is changed to keep the location of the top of the group the same while the group grows.
Starts OK and ends OK. Works fine all the way to the end once the behavior finishes. Using the same X transform.
The problem is that during the grow behavior the apparent X and Y axis motion behaves incorrectly. The motion appears to change speed and even briefly reverses direction.
I understand why this is happening but I don't know how to fix it.
I have tried every combination of interpolation for the transforms along with every variation of the grow behavior parameters I can think of.
Everything I have tried makes things worse and/or introduces unwanted side effects.
Any thoughts?

I tried to implement what you were talking about. Just to make it easier on myself, I did use a 18 piece replicator instead of 18 individual files...so hopefully that doesn't change things. I did not get any reverse or weird X,Y behaviors acting incorrectly. It started at timeline 10:00 and ended at timeline 13:00, grew 120%, and the group had an anchor point set to the top of the group so it would only grow bottom and to the sides. Stuck with the same interpolation and everything. The only thing that looked weird was that the boxes pop back in place after the grow/shrink is done. Which is just because the behavior ends. Now! something that was odd was that I couldn't keyframe any parameters in the behavior?

Similar Messages

  • Grow/Shrink Behavior Not Working

    I created 5 separate DIVs/Images using the grow/shrink behavior. The behavior worked on the computer I initially created them on, when I got home, the behaviors are still setup, but don't work in either the LiveView, Preview in Browser or when the new files are uploaded to the server.
    When I check the source code, the behavior is there as well.
    http://www.typea-sports.com/index.html (the five images are supposed to grow from 25% of their size to 100% at different speeds.
    I'm using version CS4.
    Any ideas on why?
    Thanks,
    Peter

    You need to upload the script file to the server:
    <script src="SpryAssets/SpryEffects.js" type="text/javascript"></script>
    That is in your code but not on the server.
    J

  • Grow/Shrink Behavior question

    Hello,
    I am trying to use the Grow/Shrink behavior on some title in motion so that the text appears to be slowly coming and growing towards the viewer. My issue is that the text only grows towards the right hand side only, it does not grow in all directions (i.e., if the text is placed in the middle of my screen and the behavior is applied, the text grows but only to the right side of the screen).
    What should I do so that the text grows in all directions proportionately?
    Thanks!

    I'm not sure what your issue is. The grow behavior simply changes the scale of your layer. The whole layer.
    However, the scale is calculated from the anchor point of the layer, which for a text layer is either left, right or center justified.
    Change your alignment to center if you want it to scale from the middle.
    andy

  • How do I Reverse Grow/Shrink?

    Sorry, this has to be pretty simple, but I can't figure it out for some reason. I've been using the Help pdf too.
    I want to reverse my Grow/Shrink behavior at a specific point in my timeline. I have a video grow from a little square to cover the whole screen, but I want it to return to the little square size after it's grown to full. I can't do this.
    I tried putting the Reverse bahavior on, and it has the little square start off covering the whole screen and then shrink down. When I tried trimming the the reverse to the specific point where I wanted the full to shrink back, nothing happened. It just grew out and stayed big.
    How do I reverse a behavior from a certain point on?
    4 x 2.5 GHz PowerPC G5   Mac OS X (10.4.6)  

    New Discussions ResponsesThe new system for discussions asks that after you mark your question as Answered, you take the time to mark any posts that have aided you with the tag and the post that provided your answer with the tag. This not only gives points to the posters, but points anyone searching for answers to similar problems to the proper posts.
    If we use the forums properly they will work well...
    Patrick

  • Grow/Shrink Hold Size

    I am using a Motion HD template (Blue News template) and one of them starts with a picture of a person growing in size. The template only lasts about 5 seconds but i want to use it longer. My question is how after the image has grown how can I keep it that size. Right now, it grows but then goes back to the size it started at. I don't want to keep growing the image, grow it for the 5 seconds and then hold it there.

    Personally, I'd remove the Grow/Shrink behavior and instead keyframe the scale using the Record button over the time you want it to grow - you then have the flexibility to change how the growth starts and stops by changing the keyframe interpolation.

  • Grow/Shrink Effects behavior in DW 5.5

    I am working on a page at http://www.tyneships.co.uk/phones/keys.php. Click on any letter on the page, and then on any of the links on the left hand side of the page that it takes you to.(all temporary code).
    This takes you to a page which loads a picture and shrinks it down to a size. When you click on the picture, it expands to fill the page. Click on it again, and it shrinks back again.
    I did this using the DW5.5 grow/shrink effect, to be found under Window/Behaviors/+/Effects/Grow/Shrink.
    The code is here:
    <img src="../photos/<?php echo $row_showshipset['thumblink']; ?>" width="800" height="600" title="Click to Zoom or Shrink" onClick="MM_effectGrowShrink(this, 1000, '100%', '300%', true, false, false)" onload="MM_effectGrowShrink(this, 0, '100%', '40%', false, false, false)">
    On load, it is set to shrink the image down from 100% to 40% of its size in 0 miliseconds. When clicked on, it grows to , and then when it is clicked on, it grows from 100% to 300%  to fit its preset 800 x 600.
    This would be great, except for the fact that as the picture loads, it first of all fills the screen before the javascript routine shrinks it into its table.
    The same happens if you click the next button under the photo while it is expanded.
    There used to be a behaviour called "Pre-Load Images" that I thought may fix this problem, but it is no longer ioncluded in the DW package.(or at least I cannot find it)
    Is there any way to obscure the image until it has loaded and shrunk down to its smaller size?
    Howard Walker

    You need to upload the script file to the server:
    <script src="SpryAssets/SpryEffects.js" type="text/javascript"></script>
    That is in your code but not on the server.
    J

  • How to use the grow/shrink effect from the gallery

    I'm not interested in the entire gallery, however, the
    grow/shrink effect is very nice.
    I tried looking for it in dreamweaver....
    and then I tried grabbing gallery.js and spryeffects.js
    I get errors.....Has anyone extracted this particular
    behavior? There are a number of places it can be useful.
    Thanks,

    Oh, I think I have found something ot there, sorry if I was a little impatient...
    "3d fog only works with 2 different 3d image types and does not work with a AE 3d scene."
    And one of that 3d images is "RPF" or something like that, a file that contains some 3D or depth info as far as I can imagine... So... really there is no effect like this to simulate fog quickly & easily into a simple 3D After Effects composition? Cause it'd be very usefull... of course I can imagine several ways to "fake" it, but a simple effect for each 3D layer it'd be great to avoid complications... Well, anyway any imput or advice it'll be very welcomed, CHEERS!

  • End Offset for Grow/Shrink AND Motion Path?

    I make an end offset for my Grow/Shrink ... and the clip stops where it is supposed to. Cool.
    But my Motion Path continues. So the clip stops, but then slides sideways a bit or up and down. There doesn't seem to be a matching End Offset for the Motion Path. I try placing the Motion Path to end BEFORE the end of the clip, but I'm missing something. Can't figure out how to have the two Behaviors end BEFORE the end of the clip (I want the clip to be perfectly still for a long dissolve).
    ? All ears,
    Ben

    Thank you Andy,
    It would have taken me forever to find this in the manual, if it IS in the manual. I'm about to apply it to scores of clips. Long film. All done with still images of ancient symbols and artifacts. The only thing keeping this film alive will be the animated camera moves ... and of course the content, which in this case is extraordinary: the work of David Talbott, a pretty convincing theory that explains the origin of all story on this planet. Stranger than sci-fi.
    Thank you mucho for your help,
    Ben

  • How to setup the drill down on union report

    Hi,
    I'm setting the union report.
    I want to set the drill down to another report.
    But I can't setup it.
    Would you please tell me how to setup.
    Thank you.

    Hi Hemlatha
    In Crystal Reports, to prevent the ability to drill down into a subreport when published on the Web, add a text object that is filled with blank spaces, created by pressing the 'Space Bar' and 'Enter' for line returns, to eclipse the subreport.
    This workaround is applicable only to subreports that does not grow in size. For example, subreports that display only a chart or graph.
    Steps to Add a Text Object over a Subreport
    1. In the Crystal Reports Designer of the main report, insert a text object over the subreport.
    2. Resize the text object to be the same size or a little larger than the subreport object on the main report.
    3. Fill the text object with blank spaces created by pressing the 'Space Bar' and 'Enter'. This is necessary because resizing a text object without
    the blank spaces will not maintain its size when it has been published on the Web.
    ====================
    NOTE:
    You can format the text object with a hyperlink to another report, another file or a URL.
    ====================
    Now, when the Crystal report is previewed on the Web, the text object that fully eclipses the subreport will prevent the ability to drill down into it.
    Regards
    Girish

  • 1 How to setup new company name   2 How to setup row, rock and bin

    Hi,
    Anybody who can help me how to setup new company.
    And also how to setup row, rock and bin because we need to assign a location for our spare parts inventory.
    Thanks in advance.

    Row/rack/bin sounds like an inventory system. For a simple system you might want to build your own from scratch, but for even a mid-sized company you really want a shrink-wrapped solution -- i.e. Oracle apps or SAP.
    You don't want to be figuring out how to model material transactions, move orders, etc. Nor do you probably want to dive into various cost accounting options.

  • Trying to achieve grow/shrink to nothing effect

    I'n trying to create a vertical panel where items can be added which are displayed top to bottom. Each "item" is a box with some interesting information to display and should be shown for a few seconds.
    The space where it will be displayed will first grow to make room, then fade in, display for a few seconds, fade out, and shrink back to nothing. When it grow/shrinks, the intention is that the items above and below will make room/close the gap accordingly.
    Now, I've gotten quite far to get this to work with two different solutions, but both have a problem.
    Solution 1
    Put the "item" in a Group. Then use Timelines to animate its ScaleYProperty to simulate the shrinking to nothing effect.
    Problem: As soon as I put things in a group, the content of the "Item" is too small (it uses the preferred size instead of expanding to fill available space). If I use a StackPane it looks exactly how I want, but the ScaleYProperty won't work properly then (because StackPane ignores transformations in its size calculations).
    I've tried forcing the preferred size to the correct value. Problem: I don't know the correct value, I don't know how to find out how big the "content" area should be. Doing a getWidth() of the vertical panel and substracting the Insets comes close, but there's always a small difference -- in other words, unsatisfactory.
    ...stuck
    Solution 2
    Replace the "item" with Rectangles that I resize to make space for the "item" before actually adding it. The shrinking effect works great... but I cannot get the grow effect to work properly because I donot know how big the "item" will be... there's no way to find out how big something will be once added to the scene graph.
    Fiddling with adding the item temporarily to the scene graph, then trying to get its size somehow didn't work or had annoying side effects.
    So, basically, I'm stuck with both approaches.
    First because Groups donot allow their content to fill available space... (and finding out the correct preferred size seems not possible)...
    Second because I cannot find out how big something will be BEFORE adding it to a scene graph...
    Any ideas what I can still try?

    Okay, a fully working example ripped completely out of its context :)
    This needs some keyboard control. Press 1/2 to adjust the "Playback rate" and 9/0 to adjust "Volume". In the center of the screen boxes will appear showing what you just did, and will fade out after a while. Adjusting both settings shortly after each other can result in two bars being displayed (this is intended) and shows the effect I want in greater detail.
    The part I'm not happy with is where I hard-code the Preferred Width (search for setPrefWidth) because it is not correct (the width is only an estimate and changes when a slider is displayed... so the next slider added gets a different preferred width).
    Possible solutions are some other way of "shrinking" a group without using the ScaleYProperty; somehow getting the correct preferred width; somehow getting Group to respect the "available space" for my StackPane... etc...
    It works great in my opinion, just this little snag I want to get rid of.
    playback-state-overlay.css
    .root {
      -c-main: rgb(173, 216, 230);
      -c-shadow-highlight: derive(-c-main, -50%);
      color-content-background: derive(-c-main, -80%);
    .label {
      -fx-text-fill: white;
    .slider {
      -fx-show-tick-labels: true;
      -fx-show-tick-marks: true;
    .slider .axis {
      -fx-tick-label-fill: -c-main;
    .slider .thumb {
      -fx-background-color: rgb(0, 0, 0, 0.5), rgb(64, 64, 64), linear-gradient(to bottom, yellow, white, orange);
      -fx-background-insets: 0, 1, 2;
      -fx-background-radius: 0.3em, 0.25em, 0.2em;
      -fx-padding: 0.75em 0.3em 0.75em 0.3em;
    .slider .track {
      -fx-background-color: -c-shadow-highlight, derive(-c-main, -22%), linear-gradient(to bottom, derive(-c-main,-15.5%), derive(-c-main,34%) 30%, derive(-c-main,68%));
      -fx-background-insets: 1 0 -1 0, 0, 1;
      -fx-background-radius: 0.2em, 0.2em, 0.1em;
      -fx-padding: 0.208333em;
    .axis:top {
        -fx-border-color: transparent transparent #aaaaaa transparent;
    .axis:right {
        -fx-border-color: transparent transparent transparent #aaaaaa;
    .axis:bottom {
        -fx-border-color: #aaaaaa transparent transparent transparent;
    .axis:left {
        -fx-border-color: transparent #aaaaaa transparent transparent;
    .axis-tick-mark {
      -fx-stroke: #aaaaaa;
    .item {
      -fx-font: 22pt "Arial";
    .content-box {
      -fx-background-color: color-content-background;
      -fx-background-radius: 20;
      -fx-padding: 30;
      -fx-hgap: 20; 
    ShrinkTest.java
    package hs.javafx;
    import javafx.animation.Animation.Status;
    import javafx.animation.KeyFrame;
    import javafx.animation.KeyValue;
    import javafx.animation.Timeline;
    import javafx.application.Application;
    import javafx.beans.binding.NumberExpression;
    import javafx.beans.binding.StringBinding;
    import javafx.beans.binding.StringExpression;
    import javafx.beans.property.DoubleProperty;
    import javafx.beans.property.IntegerProperty;
    import javafx.beans.property.SimpleDoubleProperty;
    import javafx.beans.property.SimpleIntegerProperty;
    import javafx.beans.value.ChangeListener;
    import javafx.beans.value.ObservableValue;
    import javafx.collections.ListChangeListener;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Group;
    import javafx.scene.Node;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.Slider;
    import javafx.scene.input.KeyCode;
    import javafx.scene.input.KeyEvent;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.ColumnConstraints;
    import javafx.scene.layout.GridPane;
    import javafx.scene.layout.RowConstraints;
    import javafx.scene.layout.StackPane;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    import javafx.util.Duration;
    public class ShrinkTest extends Application {
      private final Player player = new Player();
      private final VBox playbackStateOverlay = new VBox() {{
        getStyleClass().add("content-box");
        setVisible(false);
      public static void main(String[] args) {
        Application.launch(ShrinkTest.class, args);
      @Override
      public void start(Stage primaryStage) throws Exception {
        StackPane stackPane = new StackPane();
        playbackStateOverlay.getChildren().addListener(new ListChangeListener<Node>() {
          @Override
          public void onChanged(ListChangeListener.Change<? extends Node> change) {
            playbackStateOverlay.setVisible(!change.getList().isEmpty());
        stackPane.setOnKeyPressed(new EventHandler<KeyEvent>() {
          @Override
          public void handle(KeyEvent event) {
            if(event.getCode() == KeyCode.DIGIT1) {
              player.rateProperty().set(player.rateProperty().get() - 0.1);
            if(event.getCode() == KeyCode.DIGIT2) {
              player.rateProperty().set(player.rateProperty().get() + 0.1);
            if(event.getCode() == KeyCode.DIGIT9) {
              player.volumeProperty().set(player.volumeProperty().get() - 1);
            if(event.getCode() == KeyCode.DIGIT0) {
              player.volumeProperty().set(player.volumeProperty().get() + 1);
            event.consume();
        stackPane.getChildren().add(new GridPane() {{
          getColumnConstraints().add(new ColumnConstraints() {{
            setPercentWidth(25);
          getColumnConstraints().add(new ColumnConstraints() {{
            setPercentWidth(50);
          getColumnConstraints().add(new ColumnConstraints() {{
            setPercentWidth(25);
          getRowConstraints().add(new RowConstraints() {{
            setPercentHeight(10);
          add(new Button("Hi"), 0, 0);  // something to get focus
          add(playbackStateOverlay, 1, 1);
        Scene scene = new Scene(stackPane);
        scene.getStylesheets().add("playback-state-overlay.css");
        primaryStage.setScene(scene);
        primaryStage.setFullScreen(true);
        primaryStage.show();
        final StringBinding formattedVolume = new StringBinding() {
            bind(player.volumeProperty());
          @Override
          protected String computeValue() {
            return String.format("%3d%%", player.volumeProperty().get());
        final StringBinding formattedRate = new StringBinding() {
            bind(player.rateProperty());
          @Override
          protected String computeValue() {
            return String.format("%4.1fx", player.rateProperty().get());
        player.volumeProperty().addListener(new ChangeListener<Number>() {
          @Override
          public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
            addOSD(createOSDItem("Volume", 0.0, 100.0, player.volumeProperty(), formattedVolume));
        player.rateProperty().addListener(new ChangeListener<Number>() {
          @Override
          public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
            addOSD(createOSDItem("Playback Speed", 0.0, 4.0, player.rateProperty(), formattedRate));
      private static Node createOSDItem(final String title, final double min, final double max, final NumberExpression value, final StringExpression valueText) {
        return new VBox() {{
          setId(title);
          getStyleClass().add("item");
          getChildren().add(new BorderPane() {{
            setLeft(new Label(title) {{
              getStyleClass().add("title");
            setRight(new Label() {{
              getStyleClass().add("value");
              textProperty().bind(valueText);
          getChildren().add(new Slider(min, max * 1.01, 0) {{  // WORKAROUND: 1.01 to work around last label display bug
            valueProperty().bind(value);
            setMinorTickCount(4);
            setMajorTickUnit(max / 4);
      public void addOSD(final Node node) {  // id of node is used to distinguish same items
        String id = node.getId();
        for(Node child : playbackStateOverlay.getChildren()) {
          if(id.equals(child.getId())) {
            Timeline timeline = (Timeline)child.getUserData();
            if(timeline.getStatus() == Status.RUNNING) {
              timeline.playFromStart();
            return;
        final StackPane stackPane = new StackPane() {{
          getChildren().add(node);
          setPrefWidth(playbackStateOverlay.getWidth() - playbackStateOverlay.getInsets().getLeft() - playbackStateOverlay.getInsets().getRight());
        node.opacityProperty().set(0);
        final Group group = new Group(stackPane);
        group.setId(node.getId());
        stackPane.setScaleY(0.0);
        final EventHandler<ActionEvent> shrinkFinished = new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            playbackStateOverlay.getChildren().remove(group);
        final Timeline shrinkTimeline = new Timeline(
          new KeyFrame(Duration.seconds(0.25), shrinkFinished, new KeyValue(stackPane.scaleYProperty(), 0))
        final EventHandler<ActionEvent> fadeInOutFinished = new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            group.setId(null);
            shrinkTimeline.play();
        final Timeline fadeInOutTimeline = new Timeline(
          new KeyFrame(Duration.seconds(0.5), new KeyValue(node.opacityProperty(), 1.0)),
          new KeyFrame(Duration.seconds(2.5), new KeyValue(node.opacityProperty(), 1.0)),
          new KeyFrame(Duration.seconds(3.0), fadeInOutFinished, new KeyValue(node.opacityProperty(), 0.0))
        EventHandler<ActionEvent> expansionFinished = new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            fadeInOutTimeline.play();
        Timeline expansionTimeline = new Timeline(
          new KeyFrame(Duration.seconds(0.25), expansionFinished, new KeyValue(stackPane.scaleYProperty(), 1.0))
        group.setUserData(fadeInOutTimeline);
        playbackStateOverlay.getChildren().add(group);
        expansionTimeline.play();
      public static class Player {
        private final IntegerProperty volume = new SimpleIntegerProperty(50);
        private final DoubleProperty rate = new SimpleDoubleProperty(1.0);
        public IntegerProperty volumeProperty() {
          return volume;
        public DoubleProperty rateProperty() {
          return rate;
    }

  • How to setup three SharePoint sites on one server?

    Hello,
    How to setup three SharePoint sites on one server?  I have three sites like:
    http://site1
    http://site2
    http://site3
    And need to have them running up on one server. I recall some changes need to be done to the host file, but not sure.  Can you advise on what to change?
    Thanks,
    Paul
    Paul

    you need to make entries in DNS to get this done.
    check here:http://spshare.blogspot.com/2012/05/how-to-create-host-header-web.html
    nice blog with step by step explanation:
    http://thuansoldier.net/?p=1323
    Please remember to mark your question as answered &Vote helpful,if this solves/helps your problem. ****************************************************************************************** Thanks -WS MCITP(SharePoint 2010, 2013) Blog: http://wscheema.com/blog

  • How to setup multiple base station under one network?

    How to setup multiple base station under one network? I have 6 rooms but one airport base station makes really difficult to get good signal from every rooms. I wonder if I can setup multiple airport base stations talking to each other under the same network to build up the signal strength will help solve this problem. But, is it possible? How?

    One route would be to utilize a "roaming" network. In a roaming network, you would connect multiple AirPort Extreme Base Stations (AEBS) to the same Ethernet. Of course, this would require that your home is already wired for Ethernet.

  • How to Setup SSL on Oracle Application Server 10g Release 2 (10.1..2)

    Hi All,
    Can anybody tell me How to setup the SSL on Oracle Application Server 10g Release 2 (10.1.2).
    I have all the required documents like
    1. Oracle Application Server Portal Server Configuration Guide.
    2. Oracle Application Server Web Cache Configuration Guide.
    3. Oracle Application Server SSO Administration Guide.
    I tried to follow all this documents but still i am not able to set SSL for Oracle Portal Server.

    The Portal Configuration Guide, available on OTN at http://www.oracle.com/technology/documentation/appserver1012.html does provide some very specific information on how to set up OracleAS Portal.
    Section 6.3.2.1 Configuring SSL for OracleAS Portal describes various configurations, such as:
    SSL to OracleAS Single Sign-On
    SSL to OracleAS Web Cache
    SSL Throughout OracleAS Portal
    External SSL with Non-SSL Within Oracle Application Server
    For larger enterprise configurations, you can refer to the Enterprise Deployment Guide.
    Can you give a bit more background on what you are trying to set up? Which scenario, what sort of hardware, software versions, and so on.
    Regards,
    Pete

  • How to setup a static IP for a wireless printer

    This problem has been ongoing for several versions of OS X and the last five printers I've had and I'm finally over messing with it.  For some reson, when using a wireless printer with OS X this is a repetetive problem, and I think if I configured the printer to a static IP address instead of using DHCP, it might work better.  At least once a week, if not more often, I'll print something and get the ubiquitous Dock error of "Printer is not connected".  The printer is still in Preferences, but if I delete it, then it doesn't show up as it should for selection.
    The only way to fix this is reboot, and then the printer shows up again in Preferences.  I select it and all is well again...until a few days pass and the same thing happens again.  Using an HP LaserJet P1102w, still a current model, but it doesn't matter which printer I use.  I also have an Epson Artisan 725 and the same thing happens with it about once a week.  Also, this happens from both my Mac and my wife's Mac, so it's not an issue with just my machine.
    I've searched for documentation on how to setup a static IP address for a wireless printer with the Airport Extreme, but all I find are tutorials on how to do it with an ethernet hard-wired printer.  Any help would be greatly appreciated.

    You could set up your router to do manual assignment of IP address instead of using DHCP, but that is a PITA, because then you'd have to manually set up IP for all your devices.
    If you have AirPOrt Extreme, you could do this:
    In your Apple TV, go to the Settings >> About and write down the MAC address of your ATV
    Start up the AiPort Admin Utility
    Go to Network tab
    click + in the DHCP reservations
    Choose an IP you want for your ATV & Enter the MAC address
    From now on, this IP address will be reserved to the MAC address and only your ATV will be able to get it, no other device will.
    It is not a static IP in a true sense, but behaves just like one.
    Works great for me...
    If you don't have a AP Extreme, I'm sure other routers will allow you do reservations too.

Maybe you are looking for