# Class: oFrame

## $. oFrame

Frames describe the frames of a oColumn, and allow to access the value, ease settings, as well as frameNumber.

#### new $.oFrame(frameNumber, oColumnObject, subColumns)

openHarmony/openHarmony_frame.js, line 81
  The constructor for the $.oFrame.

  Name | Type | Description
  --- | --- | ---
  `frameNumber` | int | The frame to which this references.
  `oColumnObject` | oColumn | The column to which this frame references.
  `subColumns` | int | The subcolumn index.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `frameNumber` | int | The frame to which this references.
  `column` | oColumn | The oColumnObject to which this frame references.
  `attributeObject` | oAttribute | The oAttributeObject to which this frame references.
  `subColumns` | int | The subcolumn index.

  ##### Example

      // to access the frames of a column, simply call oColumn.frames:
      var myColumn = $.scn.columns[O]      // access the first column of the list of columns present in the scene

      var frames = myColumn.frames;

      // then you can iterate over them to check their properties:

      for (var i in frames){
        $.log(frames[i].isKeyframe);
        $.log(frames[i].continuity);
      }

      // you can get and set the value of the frame

      frames[1].value = 5;   // frame array values and frameNumbers are matched, so this sets the value of frame 1

### Members

#### constantstring

  Whether the frame is tweened or constant. Uses nearest keyframe if this frame isnt.

#### continuitystring

  Determines the frame's continuity setting. Can take the values "CORNER", (two independant bezier handles on each side), "SMOOTH"(handles are aligned) or "STRAIGHT" (no handles and in straight lines).

#### durationint

  The duration of the keyframe exposure of the frame.

#### easeoPoint/object

  Gets a general ease object for the frame, which can be used to set frames to the same ease values. ease Objects contain the following properties: x : frame number y : position of the value of the column or velocity for 3dpath easeIn : a $.oPoint object representing the left handle for bezier columns, or a {point, ease} object for ease columns. easeOut : a $.oPoint object representing the left handle for bezier columns, or a {point, ease} object for ease columns. continuity : the type of bezier used by the point. constant : wether the frame is interpolated or a held value.

#### easeInoPoint/object

  Gets the ease parameter of the segment, easing into this frame.

#### easeOutoPoint/object

  Gets the ease parameter of the segment, easing out of this frame.

#### isBlankint

  Identifies if the frame is blank/empty.

#### isKeybool

  Whether the frame is a keyframe.

#### isKeyframebool

  Whether the frame is a keyframe.

#### isKeyFramebool

  Whether the frame is a keyframe.
  Deprecated
    - For case consistency, keyframe will never have a capital F

#### keyframeIndexint

  Find the index of this frame in the corresponding columns keyframes. -1 if unavailable.

#### keyframeLeftoFrame

  Find the the nearest keyframe to this, on the left. Returns itself if it is a key.

#### keyframeRightoFrame

  Find the the nearest keyframe to this, on the right.

#### markerstring

  Returns the drawing types used in the drawing column. K = key drawings, I = inbetween, B = breakdown

#### readonlystartFrameint

  Identifies the starting frame of the exposed drawing.

#### tweenstring

  Identifies or sets whether there is a tween. Inverse of constant.

#### valueobject

  The value of the frame. Contextual to the attribute type.
  TODO
    - Include setting values on column that don't have attributes linked?

#### velocityoFrame

  Access the velocity value of a keyframe from a 3DPATH column.

### Methods

#### extend(duration, replace)

openHarmony/openHarmony_frame.js, line 592
  Extends the frames value to the specified duration, replaces in the event that replace is specified.

  Name | Type | Description
  --- | --- | ---
  `duration` | int | The duration to extend it to; if no duration specified, extends to the next available keyframe.
  `replace` | bool | Setting this to false will insert frames as opposed to overwrite existing ones.