animating a transforming elephant's trunk
The trunk is a curve (path), shaped as a comical elephant's trunk and held skyward so it's upper end is also pointed forward.

   

The curve is "bevelled" with a curve-circle to make a cylinder curved upwards and pointing forward.

The resulting cylinder is converted to mesh.  It's side edges only are subdivided 63 times so we have plenty of vertices for it's curvature to be animated smoothly.

The "Cast" modifier is used on this in order to expand and 'trumpet' the end.  This is achieved by placing the "cast object" near the upper end and keyframing it's location so it oscillates. (approaches and leaves the cylinder's end rapidly)



The cast modifier's effect is to expand and retract the end much like a flexible trumpet.  

The Empty's oscillitions are just 2 frames apart.  i.e. approach for two 2 frames, recede for 2 and so on for as long as required.

-==================-

Edit - 11/Dec 2018

For 2D trunk shaping - 

   

Instead of using a circle for the bevel object, use instead, a plane (converted to a curve with ALT-C)

This will give us a square trunk.

Once squared, the bevel plane can have it's two lower control points deleted so the trunk ends up as a flat 2D curved object. 



We keep the trunk as a curve object so it's control points when moved about with either shapekeys or "hooks", won't lose the biological curvature as it's reshaped.  Bones and rigging can also do this.