Ben Affleck surprised fans in New York City with a rare public appearance and an unexpectedly warm and cheerful demeanour.